目录
什么是移码
将每一个数值加上一个偏置常数( Excess / bias)。移码是用来表示浮点数的阶。
通常,当编码位数为n时,bias取 或(如 IEEE 754)
例如:当n = 4 时,
为什么要用移码来表示指数(阶码)
便于浮点数加减运算时的对阶操作(比较大小)
浮点数表示范围
第0位数符号位S;第1~8位为8位移码表示阶码E(偏置常数为128);第9~31位为24位二进制原码小数,表示尾数M。规格化尾数的小数点后第一位总是1,故规定第一位默认的“1”不明显表示出来。这样就可以用23个位数表示24位尾数。
IEEE754标准
规格化数:
规定:小数点前总是“1”,故可隐含表示。
Single Precision(单精度)
- Sign bit: 1表示negative;0表示 positive
- Exponent(阶码)
-
- SP规格化阶码范围为0000 0001 (-126) ~ 1111 1110 (127)
- bias为127(single),1023(double)
- Significand(部分尾数):
-
- 规格化尾数最高位总是1,所以隐含表示,省1位
- 1 + 23 bits ( single),1 + 52 bits (double)
示例
1.机器数转换为真值
已知float型变量x的机器数为BEE00000H,求x的值是多少?
- 数符:1(负数)
- 阶(指数)
-
- 阶码: 0111 1101B = 125
- 阶码的值:
- 尾数数值部分:
- 真值:
2.真值转换为机器数
已知float型变量x的值为-12.75,求x的机器数是多少?
因此,符号S=1,阶码E=127+3=128 + 2 = 1000 0010
显式表示的部分尾数 Significant = 100 1100 0000 0000 0000 0000
x 的机器数表示为: 1 1000 0010 100 1100 0000 0000 0000 0000