2017-10-21 92 views
0

我有问题试图xor 32位1(0xffff ffff)。 例如: 0xffffffff^0xfff应该是0xfffff000,但在js中,我不能声明unsigned int,因此我得到-4096或-1000的十六进制。Javascript xor 32位整数问题

这里是JS控制台输出:

>0xffffffff^0xfff 
<-4096 

>(0xffffffff^0xfff).toString(16) 
<"-1000" 

>0xffffffff.toString(2) 
<"11111111111111111111111111111111" 

>0xfff.toString(2) 
<"111111111111" 

直到我用它做什么它正确的格式。 有没有办法正确处理这种情况?

UPD:我意识到,问题是在领先一点,但还是如何处理不与它

回答

0

无符号右移是这种情况下

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