文章目录
一、数值数据的表示
1、原码表示法
原码表示法是一种最简单的机器数表示法,其最高位为符号位,符号位为
0
0
0 时表示该数为正
,符号位为
1
1
1 时表示该数为负
,数值部分与真值相同。
在原码表示中,真值
0
0
0 有两种不同的表示形式:
[
+
0
]
原
=
00000
[+0]_原=00000
[+0]原=00000
[
−
0
]
原
=
10000
[-0]_原=10000
[−0]原=10000
2、补码表示法
补码的符号位表示方法与原码相同,其数值部分的表示与数的正负有关:对于正数,数值部分与真值形式相同;对于负数,将真值的数值部分按位取反,且在最低位上加1。
在补码表示中,真值
0
0
0 的表示形式是唯一
的:
[
+
0
]
补
=
[
−
0
]
补
=
00000
[+0]_补=[-0]_补=00000
[+0]补=[−0]补=00000
3、反码表示法
反码表示法与补码表示法有许多类似之处,它与补码的区别是末尾少加一个
1
1
1 。
在反码中,真值
0
0
0 也有两种不同的表示形式:
[
+
0
]
反
=
00000
[+0]_反=00000
[+0]反=00000
[
−
0
]
反
=
11111
[-0]_反=11111
[−0]反=11111
二、机器数的定点表示与浮点表示
1、定点表示法
2、浮点表示法
让小数点的位置根据需要而浮动,这就是浮点数。例如:
N
=
M
×
r
E
N=M\times r^E
N=M×rE式中:
r
r
r 是浮点数阶码的底,与尾数的基数相同,通常为
2
2
2。
E
E
E 和
M
M
M 都是带符号的定点数,
E
E
E 叫做阶码(Exponent)
,
M
M
M 叫做尾数(Mantissa)
。
规格化浮点数:一个浮点数的表示形式并不是唯一的。例如:二进制数
0.0001101
0.0001101
0.0001101 可以表示为
0.001101
×
2
−
01
、
0.01101
×
2
−
10
、
0.1101
×
2
−
11
0.001101\times 2^{-01}、0.01101\times2^{-10}、0.1101\times2^{-11}
0.001101×2−01、0.01101×2−10、0.1101×2−11……而只有
0.1101
×
2
−
11
0.1101\times2^{-11}
0.1101×2−11 是规格化数,这就如同十进制实数中的科学标识法一样。
3、浮点数阶码的移码表示法
移码就是在真值
X
X
X 基础上加一个常数,这个常数被称为偏置值
,相当于
X
X
X 在数轴上向正方向偏移了若干单位,这就是“移码”一词的由来。即
[
X
]
移
=
偏
置
值
+
X
[X]_移=偏置值+X
[X]移=偏置值+X
移码具有以下特点:
1)在移码中,最高位为
0
0
0 表示负数,最高位位
1
1
1 表示正数,这与原码、补码以及反码的符号位取值正好相反。
2)移码全为
0
0
0 时,它所对应的真值最小;全为
1
1
1 时,它所对应的真值最大。因此,移码的大小直观的反映了真值的大小,这将有助于两个浮点数进行阶码的大小比较。
3)真值
0
0
0 在移码中的表示形式也是唯一的,即
[
+
0
]
移
=
[
−
0
]
移
=
10000000
[+0]_移=[-0]_移=10000000
[+0]移=[−0]移=10000000。
4)移码把真值映射到一个正数域,所以可将移码视为无符号数,直接按无符号数的规则比较大小。
5)同一数值的移码和补码除最高位相反外,其它各位相同。
4、浮点数尾数的基数
5、IEEE 754 标准浮点数
下面以32位的短浮点数为例,讨论浮点代码与其真值之间的关系。最高位为数符位;其后
8
8
8 位阶码,以2为底,用移码表示,阶码的偏置值为
127
127
127;其余
23
23
23 位是尾数数值位。对于规格化的二进制浮点数,数值的最高位总是1,为了能使尾数多表示一位有效值,可将这个1隐含,因此尾数数值实际上是24位(1位隐含位+23位小数位)
例:将
(
100.25
)
10
(100.25)_{10}
(100.25)10 转换成短浮点数格式。
1)把十进制数转换成二进制数。
(
100.25
)
10
=
(
1100100.01
)
2
(100.25)_{10}=(1100100.01)_2
(100.25)10=(1100100.01)2
2)规格化二进制数。
1100100.01
=
1.10010001
×
2
6
1100100.01=1.10010001\times 2^6
1100100.01=1.10010001×26
3)计算出阶码的移码(偏置值+阶码真值)。
1111111
+
110
=
10000101
1111111+110=10000101
1111111+110=10000101
4)以短浮点数格式储存该数。
因为,
符
号
位
=
0
符号位=0
符号位=0
阶
码
=
10000101
阶码=10000101
阶码=10000101
尾
数
=
10010001000000000000000
尾数=10010001000000000000000
尾数=10010001000000000000000所以,短浮点数代码为:
0
;
10000101
;
10010001000000000000000
0;10000101;10010001000000000000000
0;10000101;10010001000000000000000表示为十六进制的代码:
42
C
88000
H
42C88000H
42C88000H