首页 > 解决方案 > Javascript位向右旋转无法正常工作

问题描述

我试图向右旋转 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))

标签: javascriptbit-manipulationbitbit-shift

解决方案


推荐阅读