1. 计算机中浮点数的表示
计算机中浮点数用科学计数法来表示,分尾数、指数、阶码3部分。
阶符:指数的正负号。占1位,负为1正为0.
任意一个二进制数N,N=2P×S,其中S为尾数,P为阶码,阶码为固定值,则为定点数;若为可变值,为浮点数。在浮点表示法中,阶码通常为含符号的纯整数;尾数为含符号的纯小数,又称为精度。
浮点数结构如下:
尾数部分 (定点小数)阶码部分(定点整数)
阶符± 阶码e 数符± 尾数m
数符:数学符号,例如±*/等
例如,-3.456e-03就是-3.456×10的负3次方。
例题:设16位浮点数,其中阶符1位、阶码值6位、数符1位,尾数8位。若阶码用移码表示,尾数用补码表示,则该浮点数所能表示的数值范围是( )。
A.-264~(1-2-8)264
B.-263~(1-2-8)263
C.-(1-2-8)264~(1-2-8)264
D.-(1-2-8)263~(1-2-8)263
解:浮点表示法中,阶码通常为含符号的纯整数,尾数为含符号的纯小数。阶符1位、阶码6位在补码表示方式下可表示的最大数为63(即26-1),最小数为-64(即-26)。 尾数用补码表示时最小数为-1、最大数为1-2-8,因此该浮点表示的最小数(负数,尾数最小,阶数最大)为-263,最大数(阶码最大,尾数最大)为(1-2-8)×263。
2. 反码和补码
正数的反码和补码都是其本身;
负数的负数的原码为该数对应的无符号数的二进制,将首位置1。反码是符号位(即1)不变,对其每一位取反,补码再加1.
纯小数的原码,第一位表示符号,第二位表示1/2,第三位表示1/4,第四位表示1/8,以此类推。
原码 | 实际值 |
---|---|
0000 | 0 |
0100 | 1/2 |
0010 | 1/4 |
0001 | 1/8 |
…… | …… |
1100 | -1/2 |
…… | …… |
下面附上正数和负数的4位补码表示。
原码 | 实际值 | 补码 |
---|---|---|
0000 | 0 | 0000 |
0001 | 1/8 | 0001 |
0010 | 1/4 | 0010 |
0011 | 3/8 | 0011 |
0100 | 1/2 | 0100 |
0101 | 5/8 | 0101 |
0110 | 3/4 | 0110 |
0111 | 7/8 | 0111 |
负小数的补码直接加1,再加上负号。
负小数原码 | 实际值 | 补码 |
---|---|---|
无 | 1 | 1000 |
1111 | -7/8 | 1001 |
1110 | -3/4 | 1010 |
1101 | -5/8 | 1011 |
1100 | -1/2 | 1100 |
1011 | -3/8 | 1101 |
1010 | -1/4 | 1110 |
1001 | -1/8 | 1111 |
1000 | 0 | 0000 |
所以4位的二进制数,原码范围是-7/8—7/8,补码是-1—7/8(即1-2-3,4位的第一位看作符号位)。