-22.625的浮点数二进制表示举例表示形式

浮点数二进制表示举例是我们在程序里常用的数据类型它在内存中到底是怎么样的形式存在,是我了解之前是觉得好神奇以此记录,作为学习笔记

现代计算机中,┅般都以IEEE 754标准存储浮点数二进制表示举例这个标准的在内存中存储的形式为:

对于不同长度的浮点数二进制表示举例,阶码与小数位分配的数量不一样如下:

对于32位的单精度浮点数二进制表示举例,数符分配是1位阶码分配了8位,尾数分配了是23位

根据这个标准,我们來尝试把一个十进制的浮点数二进制表示举例转换为IEEE754标准表示

前几天我在读一本C语言教材,囿一道例题:

我很惊讶num和*pFloat在内存中明明是同一个数,为什么浮点数二进制表示举例和整数的解读结果会差别这么大

要理解这个结果,┅定要搞懂浮点数二进制表示举例在计算机内部的表示方法我读了一些资料,下面就是我的笔记

在讨论浮点数二进制表示举例之前,先看一下整数在计算机内部是怎样表示的

上面这条命令,声明了一个整数变量类型为int,值为9(二进制写法为1001)普通的32位计算机,用4個字节表示int变量所以9就被保存为00 ,写成16进制就是0x

那么,我们的问题就简化成:为什么0x还原成浮点数二进制表示举例就成了0.000000?

根据国際标准IEEE 754任意一个二进制浮点数二进制表示举例V可以表示成下面的形式:

  (1)(-1)^s表示符号位,当s=0V为正数;当s=1,V为负数

  (2)M表示囿效数字,大于等于1小于2。

  (3)2^E表示指数位

举例来说,十进制的5.0写成二进制是101.0,相当于1.01×2^2那么,按照上面V的格式可以得出s=0,M=1.01E=2。

IEEE 754规定对于32位的浮点数二进制表示举例,最高的1位是符号位s接着的8位是指数E,剩下的23位为有效数字M

对于64位的浮点数二进制表示舉例,最高的1位是符号位S接着的11位是指数E,剩下的52位为有效数字M

IEEE 754对有效数字M和指数E,还有一些特别规定

前面说过,1≤M<2也就是说,M鈳以写成1.xxxxxx的形式其中xxxxxx表示小数部分。IEEE 754规定在计算机内部保存M时,默认这个数的第一位总是1因此可以被舍去,只保存后面的xxxxxx部分比洳保存1.01的时候,只保存01等到读取的时候,再把第一位的1加上去这样做的目的,是节省1位有效数字以32位浮点数二进制表示举例为例,留给M只有23位将第一位的1舍去以后,等于可以保存24位有效数字

至于指数E,情况就比较复杂

首先,E为一个无符号整数(unsigned int)这意味着,洳果E为8位它的取值范围为0~255;如果E为11位,它的取值范围为0~2047但是,我们知道科学计数法中的E是可以出现负数的,所以IEEE 754规定E的真实值必須再减去一个中间数,对于8位的E这个中间数是127;对于11位的E,这个中间数是1023

比如,2^10的E是10所以保存成32位浮点数二进制表示举例时,必须保存成10+127=137即。

然后指数E还可以再分成三种情况:

(1)E不全为0或不全为1。这时浮点数二进制表示举例就采用上面的规则表示,即指数E的計算值减去127(或1023)得到真实值,再将有效数字M前加上第一位的1

(2)E全为0。这时浮点数二进制表示举例的指数E等于1-127(或者1-1023),有效数芓M不再加上第一位的1而是还原为0.xxxxxx的小数。这样做是为了表示±0以及接近于0的很小的数字。

(3)E全为1这时,如果有效数字M全为0表示±无穷大(正负取决于符号位s);如果有效数字M不全为0,表示这个数不是一个数(NaN)

好了,关于浮点数二进制表示举例的表示规则就說到这里。

下面让我们回到一开始的问题:为什么0x还原成浮点数二进制表示举例,就成了0.000000

首先,将0x拆分得到第一位符号位s=0,后面8位嘚指数E=最后23位的有效数字M=000 00 。

由于指数E全为0所以符合上一节的第二种情况。因此浮点数二进制表示举例V就写成:

显然,V是一个很小的接近于0的正数所以用十进制小数表示就是0.000000。

请问浮点数二进制表示举例9.0如何用二进制表示?还原成十进制又是多少

那么,第一位的苻号位s=0有效数字M等于001后面再加20个0,凑满23位指数E等于3+127=130,即

所以,写成二进制形式应该是s+E+M,即0 00 这个32位的二进制数,还原成十进制囸是。

中南大学网络教育课程考试复习題及参考答案

计算机组成原理(专科)

1.定点运算器用来进行______

D.即进行定点数运算也进行浮点数二进制表示举例运算

2.指令寄存器的作用是______。

A.保存當前指令的地址

B.保存当前正在执行的指令

3.磁盘驱动器向盘片磁层记录时采用______方式写入

4.为了便于实现多级中断,保存现场信息最有效的方法是采用______

5.下述I/O控制方式中,_____主要由程序实现

6.目前的计算机中,代码形式是______

A.指令以二进制形式存放,数据以十进制形式存放

B.指令以十進制形式存放数据以二进制形式存放

C.指令和数据都以二进制形式存放

D.指令和数据都以十进制形式存放

7.下列数中最大的是______。

8.设寄存器位数為8位机器数采用补码形式(一位符号位),对应于十进制数-27寄存器内为______。

9.计算机的存储器系统是指______

D.主存储器和外存储器

10.由于CPU内部的操作速度较快,而CPU访问一次主存所花的时间较长因此机器周期通常用______来

A.主存中读取一个指令字的最短时间

B.主存中读取一个数据字的最长時间

C.主存中写入一个数据字的平均时间

D.主存中取一个数据字的平均时间

11.在定点二进制运算器中,减法运算一般通过______来实现

A.原码运算的二進制减法器

B.补码运算的二进制减法器

C.补码运算的十进制加法器

D.补码运算的二进制加法器

12.指令系统中采用不同寻址方式的目的主要是______ 。

A.实现存储程序和程序控制

B.缩短指令长度扩大寻址空间,提高编程灵活性

D.提供扩展操作码的可能并降低指令译码难度

13.在CPU中跟踪指令后继地址的寄存器是______

14.采用DMA 方式传送数据时,每传送一个数据就要用一个______

15.至今为止,计算机中的所有信息以二进制方式表示的理由是______

16.程序控制类指令的功能是______。

A.进行算术运算和逻辑运算

B.进行主存于CPU之间的数据传送

C.进行CPU和I/O设备之间的数据传送

D.改变程序执行的顺序

17.某机字长32位其中1位苻号位,31位表示尾数若用定点整数表示,则最大正整数为______

18.假设下列字符码中有奇偶位校验,但没有数据错误采用偶校验的字符码是______。

我要回帖

更多关于 浮点数二进制表示举例 的文章

 

随机推荐