Javascript - 有符号右移操作运算符 >>

2022-01-13
1 min read

开始

阅读前,需了解二进制取反、反码、补码知识

理解

二进制数据向右移动若干个位置,左边补充符号位的数据

例子

先看正整数的,如 12 » 2

  • 先获取 12 的二进制数据
0 0 0 0 1 1 0 0
  • 再进行位移操作,向右移动2个长度,即最右边的两个0丢弃,因符号位为0,左边补充0,丢弃后的数据为
0 0 0 0 0 0 1 1

结果:3

再看负整数的,如 -6 » 2

  • 同样先拿到 -6 的二进制数据

负数的情况下需要先进行补码再进行运算,即先对 -6 转为二进制

0 0 0 0 0 1 1 0 (-6的绝对值的二进制数据, 有效位数 3 位,即 110) 1 1 1 1 1 0 0 1 (取反) 1 1 1 1 1 0 1 0 (取反后 + 1, 便得到 -6 的二进制数据)

以上就是 -6 进行一顿神马操作后的二进制数据,再进行最后一步,向右移动2个长度,即最右边的 1 0 丢弃,因符号位为1,左边补充1,丢弃后的数据为

1 1 1 1 1 1 1 0

结果:-2