我试图向右旋转32位,但没有加总,结果得到错误的值-我得到的是负数二进制而不是正确的二进制数。
function rotr (x, y) {
return x >>> y | (x << 32 - y)
}
其中x是数字,y是转数
对于数字0b00000000000000000011111111111111
和7
的旋转,我应该得到结果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))