【发布时间】:2014-10-09 22:46:34
【问题描述】:
我正在为我的计算机科学课编写一个基本计算器,它接收 0-255 之间的数字并将其转换为二进制、一个补码和二进制补码。我和另一名学生一直在一起研究这个问题,我们都被困在二进制补码上,它产生了错误的值。例如,如果我们输入 11,则二进制补码应该是“1111 1011”,但我得到的是“1111 0101”,我不确定是什么问题?
我已经在 jsbin.com 开始了一个演示,我希望这里的某个人能够真正挽救我的生命(和我的成绩),并告诉我我和我的编码伙伴做错了什么。
jsbin -> http://jsbin.com/juqevomiliwo/1/edit
另外,我真的很想添加一些错误检查,例如用户输入负数或用户输入的值不在 0-255 的值范围内,是否有人也可以帮助我?我真的很想有一个弹出窗口说,“对不起,您需要输入一个介于 0-255 之间的值”
我很抱歉问了这么多,但我不知道还能去哪里!我已经多次使用 stackoverflow 来帮助我解决问题,这是我第一次发布我不知道如何解决的问题!
非常感谢大家的宝贵时间和帮助!
-马丁
代码如下:
<!DOCTYPE html>
<html>
<head>
<title>Group Project</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<h1>Group Project 1</h1>
<p>Enter a number between 0 and 255 <input id="theInput" type="text" /> <button onclick="doSomething()">Show Binary</button> </p>
<p>Unsigned Binary: <span id="binaryOutput"></span></p>
<p>One's Complement: <span id="onesOutput"></span></p>
<p>Two's Complement: <span id="twosOutput"></span></p>
<script>
function doSomething(){
var i = document.getElementById('theInput').value; //gets number from input box and sets it to i
var binary = pad(Number(i).toString(2), 8); //converts i to binary and pads with leading zeros until 8 digits long
var ones = binary.toString(2).replace(/1/g, 'a').replace(/0/g, '1').replace(/a/g, '0');
var twos = pad((Number(ones) + 1), 8);
document.getElementById('binaryOutput').innerHTML = fancy(binary); //puts the binary in the Unsigned Binary field
document.getElementById('onesOutput').innerHTML = fancy(ones); //puts the ones compliment in the One's Complement field
document.getElementById('twosOutput').innerHTML = fancy(twos); //puts the twos compliment in the Two's Complement field
}
//adds leading zeros to achieve width
function pad(n, width, z) {
z = z || '0';
n = n + '';
return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
}
//adds space every four digits
function fancy(b) {
return b.replace( /\d{4}/g, '$& ' ).replace( /\s$/,'');
}
</script>
</body>
【问题讨论】:
-
鉴于您当前的代码,我不知道为什么您需要帮助检查数字是否在 0-255 之间。
-
我只是想尝试解决可能出现的任何问题,我觉得程序中应该有一些错误检查,比如 if n 255 then do一个弹出窗口告诉用户请输入正确的值。
-
我认为这是一项学校作业。 :-)
标签: javascript css