按位操作符(Bitwise operators
)将其操作数(operands
)当作 32 位的比特序列(由 0 和 1 组成),而不是十进制、十六进制或八进制数值。例如,十进制数 9,用二进制表示则为 1001。按位操作符操作数字的二进制形式,但是返回值依然是标准的JavaScript
数值。
补码
正整数的补码是其二进制表示,与原码相同。
+9 的补码是 00001001。这个 +9 的补码是用 8 位 2 进制来表示的,补码表示方式很多,还有16 位二进制补码表示形式,以及 32 位二进制补码表示形式, 64 位进制补码表示形式等。
求负整数的补码,将其对应正数二进制表示所有位取反(包括符号位,0变1,1变0)后加 1 。
同一个数字在不同的补码表示形式中是不同的。比如 -15 的补码,在 8 位二进制中是 11110001,然而在 16 位二进制补码表示中,就是 1111111111110001 。-5 对应正数 5(00000101)→所有位取反(11111010)→加 1(11111011)
左移运算符(<<)
将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补 0)。
例:a = a<< 2 将 a 的二进制位左移 2 位,右补0,
左移1位后a = a * 2;
若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以 2。
右移运算符(>>)
将一个数的各二进制位全部右移若干位,正数左补 0,负数左补 1,右边丢弃。
操作数每右移一位,相当于该数除以 2。
例如:a = a>> 2 将 a 的二进制位右移 2 位;
左补 0 or 补 1 得看被移数是正还是负。
网友评论