Javascript xor 32bit 整数问题
Javascript xor 32bit integer issue
我在尝试对 1 的 32 位 (0xffff ffff) 进行异或运算时遇到问题。
前任:
0xfffffff^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:我意识到问题出在前导位,但仍然不知道如何处理它
无符号右移对这种情况很有帮助
>((0xf0000000^0xf)>>>0).toString(16)
<"f000000f"
我在尝试对 1 的 32 位 (0xffff ffff) 进行异或运算时遇到问题。 前任: 0xfffffff^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:我意识到问题出在前导位,但仍然不知道如何处理它
无符号右移对这种情况很有帮助
>((0xf0000000^0xf)>>>0).toString(16)
<"f000000f"