序言:计算机在存储数据的时候只有0和1,这两个数字称为二进制数,或者叫做位(bit)。计算机使用二进制数的原因是,它们可以用电子开关的两种状态来表示,即开(1)和关(0),(在程序开发中,枚举类型数据会充分利用这个原理)。这样,计算机就可以用电路来存储和处理数据了。
存储时大体分为有符号数和无符号数,有符号数也就是-1这种,无符号数就是1这种。
无符号数规则
- 按照正常计算 写的什么就是什么
有符号数规则
- 最高位是符号位:1(负数)0(正数)
- 需要遵守原码 反码 补码的规则
原码 反码 补码规则
原码:最高位符号位,对其它的为进行本身绝对值即可。
反码:
- 正数:反码和原码相同
- 负数:符号位一定是1,其余位对原码取反。
补码:
- 正数:补码和原码相同
- 负数:符号位一定是1,反码的基础上+1
补码到原码:如果是正数,原码即补码,如果是负数,符号位不变,取反后末尾加1。
测试,下面举例我所说的都是一个字节,也就是8位。
# 如果是正数,那都是一样的。
1
# 原码 0 0 0 0 0 0 0 1
# 反码 0 0 0 0 0 0 0 1
# 补码 0 0 0 0 0 0 0 1
# 如果是负数。
-1
# 原码 1 0 0 0 0 0 0 1
# 反码 1 1 1 1 1 1 1 0
# 补码 1 1 1 1 1 1 1 1
-7
# 原码 1 0 0 0 0 1 1 1
# 反码 1 1 1 1 1 0 0 0
# 补码 1 1 1 1 1 0 0 1