32位无符号JavaScript位运算是什么意思?

10

为什么

((255<<24)|(255<<16)|(255<<8)|255)>>>0

当...时等于4294967295

Math.pow(256,4)

等于 4294967296 吗?

注意,这里的位运算比原来少了一个位。为什么呢?!

2个回答

12

由于0在二进制中占据一个数值。

4294967296是32位二进制的“槽数量”,而4294967295是占据最高槽的十进制数字。


哦,哈哈(拍额头)现在显然是非常明显的。谢谢! - talentedmrjones

8
因为第一个是2^32-1,第二个是2^32。你知道使用第一个“语句”会将值的前32位设置为1,对吧?
在32位中,第一位被“估值”为1,第二位为2,第三位为4... 第32位为2147483648。它们的总和是4294967295 :-)
我们来用8位举个例子。
Math.pow(256,1) == 256

1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255.

明白了,谢谢。那真的帮助我想起了我似乎忘记了的基础知识 ;) - talentedmrjones

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接