~ 和 - Javascript 运算符问题
~ and - Javascript Operator Questions
我正在尝试编写一个程序,将输入转换为二进制,以及此类输入的一和二的补码。我相信 ~ 应该翻转位并且 - 应该做同样的事情加上 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>
在脚本的 "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);
}
如果没有这些,后两行在 if else
语句的影响范围之外,并且 运行 无论 if
测试.
再次编辑 — 您实际询问的问题可以通过屏蔽您值的低 8 位来解决:
document.getElementById("ones").innerHTML = (~aNumber & 255).toString(2);
document.getElementById("twos").innerHTML = (-aNumber & 255).toString(2);
这两个操作都会影响值的符号,所以如果您不屏蔽,运行时间会认为它们是负数,.toString()
会做出相应的响应。
我正在尝试编写一个程序,将输入转换为二进制,以及此类输入的一和二的补码。我相信 ~ 应该翻转位并且 - 应该做同样的事情加上 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>
在脚本的 "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);
}
如果没有这些,后两行在 if else
语句的影响范围之外,并且 运行 无论 if
测试.
再次编辑 — 您实际询问的问题可以通过屏蔽您值的低 8 位来解决:
document.getElementById("ones").innerHTML = (~aNumber & 255).toString(2);
document.getElementById("twos").innerHTML = (-aNumber & 255).toString(2);
这两个操作都会影响值的符号,所以如果您不屏蔽,运行时间会认为它们是负数,.toString()
会做出相应的响应。