1. 二进制概念
- 二进制是由 0 与 1 组成的机器码 即 01010101
- 二进制单位是 bit
- 8bit 为 1 组 , 理论状况就是数字 1 转换为二进制 00000001
- 二进制最高位为符号位,0 示意负数 (+),1 示意正数 (-) -1 —> 10000001 1 —–>00000001
2. 原码
- 原码就是符号位加上真值的绝对值.
-
例:
- [+1] 原 = 0000 0001
- [-1] 原 = 1000 0001
3. 反码
- 负数的反码是其自身;
- 正数的反码是在其原码的根底上,符号位不变,其余各个位取反。
-
例
- [+1] = [0000 0001] 原 = [0000 0001] 反
- [-1] = [1000 0001] 原 = [1111 1110] 反
4. 补码
- 负数的补码就是其自身;
- 正数的补码是在其原码的根底上,符号位不变,其余各位取反,最初 +1。(也即在反码的根底上 +1)
-
例
- [+1] = [0000 0001] 原 = [0000 0001] 反 = [0000 0001] 补
- [-1] = [1000 0001] 原 = [1111 1110] 反 = [1111 1111] 补
5. 原码、反码、补码 (重点 难点)
- 二进制的最高位是符号位: 0 正 1 负
- 负数的原码, 反码, 补码都一样 (三码合一)
- 正数的反码 = 它的原码符号位不变, 其余位取反 (0->1,1->0)
- 正数的补码 = 它的反码 +1, 正数的反码 = 正数的补码 -1
- 0 的反码, 补码都是 0
- java 没有无符号数, 换言之,java 中的数都是有符号的
- 在计算机运算的时候, 都是以补码的形式来运算的.
- 当咱们看运算后果的时候, 要看它的原码 (重点)