按位操作符

2018-10-01  本文已影响0人  小小的白菜

按位操作符(Bitwise operators)将其操作数(operands)当作 32 位的比特序列(由 0 和 1 组成),而不是十进制、十六进制或八进制数值。例如,十进制数 9,用二进制表示则为 1001。按位操作符操作数字的二进制形式,但是返回值依然是标准的JavaScript数值。

MDN

补码

正整数的补码是其二进制表示,与原码相同。

+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 得看被移数是正还是负。

上一篇 下一篇

猜你喜欢

热点阅读