目录
- 二进制相关运算符
- 移位运算符
- <<
- >>
- |(位或运算)
- 参考文档
二进制相关运算符
移位运算符
移位运算就是对二进制
进行有规律的移位。
tips:进制转换文档链接
<<
“<<”运算符执行左移位
运算。在移位运算过程中,符号位始终保持不变。如果右侧空出位置,则自动填充为 0;超出 32 位的值,则自动丢弃。
举例说明
- 把数字 5 向左移动 2 位
数字5转化为2进制为101
101补足32位为 0000000000000000 0000000000000101
左移2位(右侧以0补齐) 为 10100 转换为10进制为20console.log(5<<2) // 20
>>
“>>”运算符执行有符号右移位
运算。与左移运算操作相反,它把 32 位数字中的所有有效位整体右移,再使用符号位的值在高位填充空位。移动过程中超出的值将被丢弃。
举例说明
- 将数字1000右移8位
数字1000转化为2进制为 1111101000
补足32位为 0000000000000000 0000001111101000
右移8位,用符号位值0填补空位,移动后的值为
0000000000000000 000000000000001111101000 超过32位被截断 ===>11101000
最终二进制值为11
转化为10进制值为3console.log( 1000 >> 8 ) // 3
- 将-1000右移8位
-1000的二进制为 0000011000
补足32位为 11111111 11111111 11111100 00011000
右移动8位,用符号位值1在高位
填充补位,超过32位被截断,移动后的值为
11111111 11111111 11111111 11111100
现在得到的二进制是补码形式,需要根据补码计算得出原码(保留符号位,然后按位取反,然后加1,即为所求数的原码)值为
10000000 0000000 000000011 00000100 = -4
|(位或运算)
参考文档
- js移位运算符