一、定点数的表示
1. 机器数的定点表示
(1)定点小数
最大正数:x0 = 0,x1 ~ xn均为1,真值为1 - 2^(-n)
最小负数(绝对值最大):x0 = 1,x1 ~ xn均为1,真值为-(1 - 2^(-n))
(2)定点整数
最大正数:x0 = 0,x1 ~ xn均为1,真值为2^(n) - 1
(注意x下标从0开始,0 ~ n一共有n + 1 位。如果下标为1 ~ n,则真值为2^(n-1) - 1 )
最小负数:x0 = 1,x1 ~ xn均为1,真值为-(2^(n) - 1)
2. 原码 补码 反码 移码
表示范围中的字长都为 n + 1
(1)原码
小数表示范围:-( 1 - 2^(-n) ) <= x <= 1 - 2^(-n) 关于原点对称
整数表示范围:-( 2^(n) - 1 ) <= x <= 2^(n) - 1 关于原点对称
零的表示:
正0:[+0]原 = 00000 负0:[-0]原 = 10000
(2)补码
小数表示范围:-1 <= x <= 1 - 2^(-n) 其中 -1 被人为规定为补码小数所能表示的最小负数,写作 1.0000
整数表示范围:-2^(n) <= x <= 2^(n) - 1 比原码多表示一个 " -2^(n) "
零的表示:
补码真值0表示唯一,[+0]补 = [-0]补 = 0.0000
模4补码(变形补码):
* 更容易检查 加减运算(不是乘除) 中的溢出问题
* 存储时采用一个符号位,参与ALU运算时才用两个符号位
(3)反码
数值表示范围与原点一样
小数表示范围:-( 1 - 2^(-n) ) <= x <= 1 - 2^(-n) 关于原点对称
整数表示范围:-( 2^(n) - 1 ) <= x <= 2^(n) - 1 关于原点对称
零的表示:
正0:[+0]反 = 0.0000 负0:[-0]反 = 1.1111
(4)移码
补码符号位取反得移码
表示范围:-2^(n) <= x <= 2^(n) - 1 移码全0,对应-2^(n);移码全1,对应2^(n) - 1
零的表示:
移码真值0表示唯一,[+0]移 = [-0]移 = 100...0 (n个0)