Javascript位向右旋转无法正常工作

时间:2020-08-13 08:35:43

标签: javascript bit-manipulation bit bit-shift

我试图向右旋转32位,但没有加总,结果得到错误的值-我得到的是负数二进制而不是正确的二进制数。

function rotr (x, y) {
  return x >>> y | (x << 32 - y)
}

其中x是数字,y是转数

对于数字0b000000000000000000111111111111117的旋转,我应该得到结果0b11101001101101011101101110100101

但是当我做console.log(rotr(0b00000000000000000011111111111111, 7).toString(2))

我得到这个结果-1111111111111111110000001

有人可以解释发生了什么吗?

function rotr(x, y) {
  return x >>> y | (x << 32 - y)
}
console.log(rotr(0b00000000000000000011111111111111, 7).toString(2))

0 个答案:

没有答案