【发布时间】:2018-12-27 19:41:34
【问题描述】:
我只是在bitwise operators 上解决随机问题,并尝试各种其他组合来制作个人笔记。不知何故,我就是想不出解决办法。
假设我想检查两个整数之间的按位与或检查 ~number 和 -negative number(~num1 & -num2) 以及各种其他组合。然后我可以看到答案,但我无法确定这是怎么发生的?
控制台:
console.log(25 & 3);输出 1(我可以轻松解决)。
console.log(-25 & -3);输出 27。
类似
console.log(~25 & ~3);输出 -28。
console.log(25 & ~3);输出 -24。
console.log(~25 & 3);输出 -2。
console.log(~25 & -3);输出 --28。
console.log(-25 & ~3);输出 --28。
我知道 "console.log(25 & -3)" 背后的逻辑。
25 是 11001
-3 是 11101(3=00011 减号就像 2s 恭维+1)
AND-11001 = 25。
但是当两个数字都是负数或上面提到的其他情况时,我不能让它以同样的方式工作。我也尝试过各种数字组合,而不仅仅是这两个。但我无法解决问题。谁能解释我无法解决的问题中使用的二进制逻辑。
(我在 SO 上花了大约 2 小时来找到答案,在 google 上又花了 1 小时以上,但我仍然没有找到答案)。
感谢和问候。
【问题讨论】:
-
您是否检查过其他类似问题的问题?如果是这样,请参考它们并让我们知道为什么它不适合您。
-
我确实试图找到可能相似的案例,但我没有找到任何会提出相同问题的案例。每个地方,甚至多个网站上,每个人都讨论过一个正整数和一个负整数的问题,这很容易做到。出于这个原因,与其浪费时间寻找,我想来这里。请放心,如果我得到与我类似的问题,我一定会标记你。 BTW @PSKocik 下面确实给出了一个非常简单而漂亮的例子。
标签: javascript bit-manipulation bitwise-operators bitwise-and