符号位
最高位的bit代表符号位,0为正数、1为负,剩余的31bits则代表数字部分
负数的表述
对于负数而言(绝对值取反码再加一,此即为补码),是以补码的形式存储在内存中的。以-7(int)为例
- 将-7的绝对值转化为二进制:
0000 0000 0000 0000 0000 0000 0000 0111 - 将上面的二进制以反码表示:
1111 1111 1111 1111 1111 1111 1111 1000 - 转化为补码:
1111 1111 1111 1111 1111 1111 1111 1001
右移和无符号右移
- 在执行右移
>>
操作时,若参与运算的数字为正数,则在高位补0;若为负数,则在高位补1。 - 无符号右移
>>>
则不同,无论参与运算的数字为正数或为负数,在执运算时,都会在高位补0。
左移
在执行左移<<
操作时,没有有符号和无符号的区别,都是在低位补0。
加法
- 不进位加法其实就是一个异或操作
- 进位加法其实就是一个与操作的结果左移一位