开始
阅读前,需了解二进制取反、反码、补码知识
理解
二进制数据向右移动若干个位置,左边补充符号位的数据
例子
先看正整数的,如 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