我想先将数字转换为二进制,然后按位取反。 像这样:
数字是 793 = 1100011001
然后将二进制值转换为:0011100110
在 JavaScript 中,我可以执行以下操作:
var x = 793;
document.write(x.toString(2)); // gives 0011100110
这将给我数字的二进制值。 但是如何按位反转二进制?
我尝试了 ~
运算符,但可能无法正常工作。输出为:-1100011010
最佳答案
MooGoo 的回答是正确的。
这里有一些关于正在发生的事情的信息......让我们假设这是一个 64 位整数。
793 = 1100011001
~793 = -794 = 1111111111111111111111111111111111111111111111111111110011100110
0x3ff = 1111111111
(-793 & 0x3ff) = 11100110
因此您可以使用以下代码解决所有情况:
var x = 793; // input value
var y = x.toString(2);
var yl = y.length;
var mask = (Math.pow(2,yl)-1); // calculate mask
var result = ~x & mask;
document.write(result.toString(2)+"<br/>");
关于javascript - 反转数字的二进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4338315/