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

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

一 .非规格化浮点数定义:小数点的位置根据需要而变动
在这里插入图片描述
浮点数个人觉得完全可以当做科学计数法来记,尾数为小数部分(如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且阶码各位为0,Ms=1且尾数除最后一位外其余各位均为0的时候,得到绝对值最小负数(最大负数)
在这里插入图片描述

二 .IEEE754标准浮点数
IEEE754标准浮点数的格式如图所示
在这里插入图片描述
三 .规格化浮点数
规格化浮点数的尾数M的绝对值应为:121\over2\leq|M|<1
(当121\over2\leqM<1时,尾数为0.1XX…形式;当-1\leqM<-121\over2时,尾数为1.0XX…形式)

规格化操作:通过调整非规格化浮点数的尾数和阶码的大小,使非零浮点数在尾数的最高位数位上保证是有效值(可对比科学计数法,如100.1用科学计数法应表示为1.0011021.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*262^6(262^6进一步转换为21102^{110})//规格化操作到这里就算完成了 ,但浮点数代码未完成

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

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

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

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

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

③以规格化二进制数形式表示出
1.1001001*242^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)2E127*2^{E-127}
S代表符号位,0正1负;E为用移码表示的阶码;f是尾数的小数部分

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章