32位无符号JavaScript按位运算是一个简短的操作

tal*_*nes 10 javascript bit-manipulation bitwise-operators

为什么

((255<<24)|(255<<16)|(255<<8)|255)>>>0
Run Code Online (Sandbox Code Playgroud)

等于4294967295时

Math.pow(256,4)
Run Code Online (Sandbox Code Playgroud)

等于4294967296?

请注意,按位运算只有一个.为什么是这样?!

Bar*_*end 13

因为零占用二进制值.

4294967296是32位给出的"槽"数,4294967295是占用最高槽的十进制数.


xan*_*tos 8

因为第一个是2 ^ 32-1,第二个是2 ^ 32?你知道,对于第一个"语句",你将值设置为1的前32位,对吧?

在32位中,第一位是"值"1,第二位是2,第三位是4 ......第32位2147483648.它们的总和是4294967295 :-)

让我们以8位为例.

Math.pow(256,1) == 256

1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255.
Run Code Online (Sandbox Code Playgroud)