Javascript xor 32位整数问题

时间:2017-10-21 14:54:02

标签: javascript overflow xor

我试图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:我意识到问题在于领先,但仍然没有解决问题

1 个答案:

答案 0 :(得分:0)

无符号右移对这种情况很有帮助

>((0xf0000000^0xf)>>>0).toString(16)
<"f000000f"