我正在做一个用32位二进制整型数来表示棋盘上的棋子的棋盘程序,为了计算可能的移动,我对整数进行了位移位,但这对最后一位不起作用。
通过将2^31加到int(2147483648)中,将第32位设置为当前值,但问题是,当我对该值应用右移位时,得到的是一个负数。
const test = 0b1000_0000_0000_0000_0000_0000_1000_0000;
console.log(test) //2147483776
console.log(test >> 0) //-2147483520
console.log(test >> 5) //-67108860
// expected output: 67108868
console.log(toBinary(test >> 5)) //1111_1100_0000_0000_0000_0000_0000_0100
//expected output: 0000_0100_0000_0000_0000_0000_0000_0100
我认为这个问题与有符号整数的限制有关,有没有办法将其设置为无符号整数来解决这个问题?或者有没有其他方法可以解决这个问题?
1条答案
按热度按时间k10s72fa1#
您要查找unsigned right shift(又称填零右移)
>>>
。它不扩展符号位,而是将零移入。例如: