我试图xor 32位为1(0xffff ffff)时遇到问题。 例如: 0xffffffff ^ 0xfff应该是0xfffff000但是在js中我不能声明unsigned int因此我得到-4096或-1000十六进制。
这是js控制台输出:
>0xffffffff^0xfff
<-4096
>(0xffffffff^0xfff).toString(16)
<"-1000"
>0xffffffff.toString(2)
<"11111111111111111111111111111111"
>0xfff.toString(2)
<"111111111111"
它格式正确,直到我用它做一些事情。 有没有办法正确处理这种情况?
UPD:我意识到问题在于领先,但仍然没有解决问题答案 0 :(得分:0)
无符号右移对这种情况很有帮助
>((0xf0000000^0xf)>>>0).toString(16)
<"f000000f"