计算机组成原理 机器数的浮点表示法

写个学习心得巩固下前段时间学的机组的知识吧。

一 .非规格化浮点数定义:小数点的位置根据需要而变动
在这里插入图片描述
浮点数个人觉得完全可以当做科学计数法来记,尾数为小数部分(如0.11);阶码部分为阶数,公式可表示为:N=M*r^E
其中,r为阶码的底,与尾数的基数相同,一般来讲做题的话题目会明确给出。
E,M为带符号的定点数,E为阶码,M为尾数。(大多数计算机中,尾数为纯小数,常用原码或补码表示;阶码为整数,常用移码或补码表示)
浮点数的格式如上图,尾数与阶码均用补码表示。E+M=机器的位数(感觉还是放个图比较好理解,word手撸图,莫名卑微哈哈,写完这篇去看markdown了)
1.最大正数(二进制)
当Es=0,Ms=0时,阶码尾数均为正数;当阶码与尾数的数值(不含符号位)全为1时,该浮点数即为最大正数
在这里插入图片描述
2.最小正数
当Es=1且阶码各位为1,Ms=0且尾数最后一位不为1时,阶数为负,尾数为正,即得到最小正数在这里插入图片描述
3.绝对值最大负数(最小负数)
当Es=0,阶码各位为1,Ms=1,尾数各位为1时,得到绝对值最大负数(最小负数)在这里插入图片描述
4.绝对值最小负数(最大负数)
当Es=1且阶码各位为1,Ms=1且尾数除最后一位外其余各位均为0的时候,得到绝对值最小负数(最大负数)在这里插入图片描述
二 .IEEE754标准浮点数
IEEE754标准浮点数的格式如图所示
在这里插入图片描述
三 .规格化浮点数
规格化浮点数的尾数M的绝对值应为: 1 2 1\over2 \leq |M|<1
(当 1 2 1\over2 \leq M<1时,尾数为0.1XX…形式;当-1 \leq M<- 1 2 1\over2 时,尾数为1.0XX…形式)

规格化操作:通过调整非规格化浮点数的尾数和阶码的大小,使非零浮点数在尾数的最高位数位上保证是有效值(可对比科学计数法,如100.1用科学计数法应表示为 1.001 1 0 2 1.001*10^2 )。将非规格化浮点数转化为规格化浮点数,即转化为符合IEEE754标准的浮点数。

例: ( 100.25 ) 10 (100.25)_{10} 转换为短浮点数格式
①先将十进制转换为二进制数:

( 100.25 ) 10 (100.25)_{10} = ( 1100100.01 ) 2 (1100100.01)_2

②将该二进制数规格化:

1100100.01=1.10010001* 2 6 2^6 ( 2 6 2^6 进一步转换为 2 110 2^{110} )//规格化操作到这里就算完成了 ,但浮点数代码未完成

③计算出阶码的移码(偏置值+阶码真值):

2 6 2^6 进一步转换为 2 110 2^{110} ,该110即为偏置值。
1111111+110=10000101
④以短浮点数形式存储该数
符号位=0
阶码=10000101
尾数(先前规格化操作中求得的尾数后补零,直到位数达到规定的格式位数)=10010001000000000000000
短浮点数代码:0;1000101;10010001000000000000000

同理,可求得短浮点数格式转换为其他进制的数
例:把短浮点数C1C90000H转换成十进制数

①先转换为二进制数形式
C1C90000H=11000001110010010000000000000000
分离符号位、阶码。尾数
符号位=1
阶码=10000011
尾数=10010010000000000000000

②计算偏置值(移码-阶码真值)
10000011-1111111=100

③以规格化二进制数形式表示出
1.1001001* 2 4 2^4

④转换为非规格化二进制数
11001.001

⑤转换成十进制(加符号)
( 11001.001 ) 2 (11001.001)_2 =- ( 25.125 ) 10 (25.125)_{10}
故该浮点数为-25.125

PS:IEEE754短浮点数规格化的数值为:
v= ( 1 ) S (-1)^S *(1.f) 2 E 127 *2^{E-127}
S代表符号位,0正1负;E为用移码表示的阶码;f是尾数的小数部分

发布了20 篇原创文章 · 获赞 17 · 访问量 4529

猜你喜欢

转载自blog.csdn.net/zhang175gl/article/details/88858644