~and-Javascript操作符问题

~and-Javascript操作符问题,javascript,bitwise-operators,twos-complement,ones-complement,Javascript,Bitwise Operators,Twos Complement,Ones Complement,我正试图写一个程序,将一个输入转换成二进制,并对输入进行一和二的补码。我认为~应该翻转位,并且-应该做同样的事情,加上1:1的值,但是结果并不像预期的那样 <!DOCTYPE html> <html> <head> <script> function doStuff(){ var numConv = document.getElementById("origNumber

我正试图写一个程序,将一个输入转换成二进制,并对输入进行一和二的补码。我认为~应该翻转位,并且-应该做同样的事情,加上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>

函数doStuff(){
var numConv=document.getElementById(“orignNumber”).value;
var aNumber=数量(numConv);
如果(数量<0 | |数量>255)
警报(“请输入一个介于0和255之间的数字”);
其他的
document.getElementById(“二进制”).innerHTML=aNumber.toString(2);
document.getElementById(“one”).innerHTML=(~aNumber.toString)(2);
document.getElementById(“twos”).innerHTML=(-aNumber.toString(2);
}
点击我
无符号二进制:

二进制翻译将出现在此处。

补语:

一的补码将出现在这里。

二者的补充:

这两个词的补语将出现在这里。

在脚本的“else”部分中,我有几行代码可以将变量aNumber转换为所需的1和2的补码,但它没有

例如,如果您输入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); 

<>这两个操作都会影响值的符号,所以如果你不掩饰运行时会认为它们是否定的,并且<代码>。toSTRIGN()/<代码>将相应地响应。

< P> <强>注释< /强> -我不认为这是问题,但这是个问题。

您遗漏了一组
{}

            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); 

这两个操作都影响值的符号,所以如果不掩饰运行时会认为它们是否定的,并且<代码>。toSTRIGEN()/代码>将相应地响应。

每一个尖的答案,对于所有神圣的爱,不要捷径,不要在代码<使用卷轴> < < /Cord>语句】。根据波蒂的回答,出于对一切神圣事物的热爱,不要在
if
语句中使用短括号,也不要使用大括号。这使一切变得不必要的困难。我继续向前,在if和then语句中分别添加了{},以防万一。起初它没有改变任何东西,后来我加了255英镑,效果很好,谢谢。我没有意识到屏蔽它们将是解决方案。我继续向前,将{}分别添加到if和then语句中,以防万一。起初它没有改变任何东西,后来我加了255英镑,效果很好,谢谢。我没有意识到掩盖它们是解决办法。