Java移位运算
背景
java或android源码中经常会使用移位运算来代替乘除运算,因为移位运算的性能比乘除运算的高(PS:对于计算机而言,移位运算只是移了个位置),所以了解移位运算的计算过程对于我们阅读源码会有一定的帮助。
原码、反码、补码
原码是人脑最容易理解和计算的表示方式
第一位表示符号, 其余位表示值
-1的原码是10000000 00000000 00000000 00000001
反码是人脑无法直观看出其数值的. 通常需要转换成原码在计算其数值
正数的反码是其本身
负数的反码是在其原码的基础上, 符号位不变,其余各个位取反
-1的反码是11111111 11111111 11111111 11111110
补码是人脑无法直观看出其数值的. 通常需要转换成原码在计算其数值
正数的补码就是其本身
负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
-1的补码是11111111 11111111 11111111 11111111