文章目录
计算机中数的表示
二进制“1”和“0”的表示
- 用电压的高低表示,半导体工艺,CMOS
- 用磁通量的有无表示,超导体工艺
- 用能级的高低表示,量子计算机
- 用基因序列表示,A, G, C, T, DNA计算机(本质也是二进制)
定点数的表示
- 原码:A=an-1 an-2…… a1 a0表示
- 最高位an-1为符号位,0表示正,1表示负;其它位an-2…… a1 a0表示数值。
- 原码的问题:加减法效率低,两个“0”
- 补码
- 本质:取模运算,不包含符号位的n位数,[Y]补=2^(n+1)+y,如-2%12=10
- 最高位an-1为符号位,0表示正,1表示负。
- 原码补码转换
最高位为0时,一样;
最高位为1时,最高位不变,其余位“按位取反加一”。 - 补码运算
A-B=A+B的负数=A+(B求补) - 加法溢出判断
A和B的最高位一样,且结果的最高位与A和B的最高位不一样。
浮点数的表示
-
由来
定点数表示范围有限,太大或太小的数都不能表示,且除法不精确 -
表示:IEEE 754标准
-
组成:符号位,阶码(exponent),尾数(fraction)
符号位:最高位
阶码(exponent):
i. 阶码的移码表示:底为2,2(阶码-偏移值)(阶码=指数+偏移)
ii. 范围:0<e<255(指数范围:-127<m<128)
①. e=255:无穷大数或非数
②. e=0:非规格化数或正负0
IEEE 754允许特别小的非规格化数:阶码能表示的最小指数为-126,那更小的呢?
此时阶码为0,尾数前的1不再加,即浮点数:0.f * 2^(e-126)。
例如: 2 − 128 = ( 0.01 ) 2 ∗ 2 − 126 2^{-128}=(0.01)_2 * 2^{-126} 2−128=(0.01)2∗