文章字数:495,阅读全文大约需要1分钟
机器数和真值
- 真值: 即数字本身的值,例如
-3
- 机器数: 数字在计算机中存储的值,第一位为符号位
1
代表负数,0
代表正数。后面的二进制代表绝对值,例如-3
的机器数就是10000011
原码
- 原码即机器数,是计算机对于数值的二进制表示方式
- 除了第一位的符号位,其余便是绝对值。因此可以表示的范围为
[1111 1111, 0111 1111]
即[-127, 127]
反码
- 正数不变
- 负数在原码的基础上,除了符号位,其余取反
- 为了解决数值减法的问题,通过反码可以让符号位也参与运算,从而将减法也转换成加法(2-1 = 2 + (-1))
补码
- 正数不变
- 负数在反码的基础上,+1
- 为了解决反码存在两个值表示
0
的情况(因为存在符号位,所以有一个+0和-0) - 使用补码之后负数能比正数多表示一个值(正数需要表示0,负数部分不需要)
- 所以补码表示范围就成了
[-2^8, (2^8)-1]
即[-127, +127]
计算机加减法
- 补码将减法也变成了加法,计算机上数值都是以补码形式存储的,所以直接二进制相加即可
1 | class Solution { |