javascript - 反转数字的二进制值

标签 javascript bitwise-operators

我想先将数字转换为二进制,然后按位取反。 像这样:

数字是 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/

相关文章:

javascript - 验证注册表,未填写 span 元素

javascript - 为什么最好的做法是用括号将分配给变量的 JSX 括起来?

javascript - 对javascript练习的困惑

c++ - 这个按位异或有什么意义?

javascript - Firestore orderBy Timestamp 对象

javascript - 如何为图像设置计时器以在 javascript 或 html 中显示?

c - 如何在 C 中设置 uint8_t 的低 3 位

c - 为什么 printf ("%d", ~0) 输出 -1?

algorithm - 在 (0,n) 范围内生成 k & x = k 的解

c - 表达式中移位和按位补码的反转优先级