0 javascript bitwise-operators twos-complement ones-complement
我正在尝试编写一个将输入转换为二进制的程序,以及这种输入的一个和两个补码.我相信〜应该翻转位 - 并且应该做同样的事情并加上1合1的值,但结果并不像预期的那样.
<!DOCTYPE html>
<html>
<head>
<script>
function doStuff(){
var numConv = document.getElementById("origNumber").value;
var aNumber = Number(numConv);
if (aNumber < 0 || aNumber > 255)
alert("Please enter a number between 0 and 255.");
else
document.getElementById("binary").innerHTML = aNumber.toString(2);
document.getElementById("ones").innerHTML = (~aNumber).toString(2);
document.getElementById("twos").innerHTML = (-aNumber).toString(2);
}
</script>
</head>
<body>
<input type="text" id="origNumber" />
<button onclick = "doStuff()">Click Me</button>
<p>Unsigned Binary:</p>
<p id="binary">The binary translation will appear here.</p> <!-- Where the binary appears -->
<p> One's Complement:</p>
<p id="ones">The one's complement will appear here.</p> <!-- Where one's complement appears -->
<p> Two's Complement:</p>
<p id="twos">The two's complement will appear here.</p> <!-- Where two's complement appears -->
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
在脚本的"else"部分,我有一些行应该将变量aNumber转换为所需的一个和两个补码,但事实并非如此.
例如,如果输入50,则二进制文件将是正确的,但是一个变为-51,而二者变为-50.我意识到将(~aNumber)和(-aNumber)乘以-1会消除负值,但它不会修复不正确的值.
什么是修复 - 和〜运算符或绕过它们的方法?
注 -我不认为这是该问题,但它是一个问题.
你已经离开了一套 { }
else {
document.getElementById("binary").innerHTML = aNumber.toString(2);
document.getElementById("ones").innerHTML = (~aNumber).toString(2);
document.getElementById("twos").innerHTML = (-aNumber).toString(2);
}
Run Code Online (Sandbox Code Playgroud)
如果没有这些,前两行不在if else声明的影响范围之内,并且无论if测试如何都会运行.
再次编辑 - 你实际问的问题可以通过屏蔽你的值的低8位来解决:
document.getElementById("ones").innerHTML = (~aNumber & 255).toString(2);
document.getElementById("twos").innerHTML = (-aNumber & 255).toString(2);
Run Code Online (Sandbox Code Playgroud)
这两个操作都会影响值的符号,因此如果您不屏蔽运行时将认为它们是负数.toString()并将相应地做出响应.
| 归档时间: |
|
| 查看次数: |
41 次 |
| 最近记录: |