#Bitwise #补码 #原码 #反码
Review
- 2019/01/30
- 2024-09-30 14:16
[!Summary] 补码=反码+1
一、Introduction #
用于在最基本的层次上(最底层,速度更快),按内存中表示数值的比特位来操作数值。
ECMAScript中的所有数值都以 IEEE-754 64位格式存储。但位操作符并不直接操作64位的值,而是先将64位的值转换成32位的整数,然后执行位操作,最后再将结果转换回64位。
对开发者而言,就好像只有32位整数一样,因为64位整数存储格式是不可见的。
数都使用二进制码存储。
- 有符号的整数,第32位(位31)表示符号。0-正数,1-负数。
- 正数以原码存储
- 负数以补码的二进制编码存储
二补数(补码)的计算过程
绝对值二进制表示
求反码(原码取反)
~operation结果+1(反码+1)
奇特的副作用:
NaN、Infinity在位操作中被当成0处理按位与
&:只有全是1才是1;按位或
|:只要有1就是1,全为0才是0;按位非
~:返回数值的反码。本质是对操作数取反并减1按位异或(XOR)
^:相同为0,不同为1左移
<<:(有符号左移,以0填充空位) 2«3 => 16有符号右移
>>;数值向右移动,但保留符号。用符号位的值填充空位。无符号右移
>>>:正数同有符号右移。负数的话,右移空位以0来填充,结果往往很大。