我是靠谱客的博主 殷勤早晨,最近开发中收集的这篇文章主要介绍IEEE浮点数表示法总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  :IEEE浮点数表示法总结

整理者:CmdHack

一:小数部分为0123456.0

二:整数部分为00.125

三:小数整数非0123456.125

都将它们的整数部分和小数部分的二进制写出来

1:然后将小数点移动到第一个1的后面  左移指数部分加1  右移指数部分减1

123456.0à11110001001000000.0à1.11100010010000000*2^16  指数16

0.125à0.001 à1.(0)*2^-3   指数-3

123456.125à.11110001001000000. 001à1.1110001001000000 001*2^16 指数16

2:经过上述转换之后最高位永远是1  所以IEEE表示法在表示尾数的时候将他们转换之后就将最高位的1删除 所以上述的尾数部分应该是

尾数:(23 不足后边补0

123456.0     à111 0001 0010 0000 0000 0000

0.125                à000 0000 0000 0000 0000 0000  

123456.125   à111 0001 0010 0000 0001 0000

38位,可以表示范围是0 - 255的无符号整数,也可以表示-128 - 127的有符号整数。但因为指数是可以为负的,所以为了统一把十进制的整数化为二进制时,都先加上127

指数(8  不足前边补0)

123456.0     à16+127à143à10001111

0.126                à-3+127à01111100

123456.125   à16+127à143à10001111

4:符号位

(1为负   0为正)

 

è上述浮点数的二进制表示分别为

123456.0     à0 10001111  111 0001 0010 0000 0000 0000

0.127                à0 01111100  000 0000 0000 0000 0000 0000  

123456.125   à0 10001111  111 0001 0010 0000 0001 0000

但是变量在内存中是依字节为单位逆序排放 123456.125举例

123456.125的二进制表示法我们算出来了是0 10001111  111 0001 0010 0000 0001 0000

32  将它们分成ABCD四个字节分别是

A(01000111)

B(11110001)

C(00100000)

D(00010000)

但是它们在内存中的分布应该为DCBA

用二进制表示就是00010000 00100000 11110001 01000111

那么他的十六进制表示为10  20  F1   47

 

总结 计算步骤:

1:整数部分 小数部分转换成对应的二进制

2:移动小数点的位置 以此计算出指数

3:尾数的最高位1去掉 然后将剩余部分当作尾数 不足23位后边补0(如果小数部分是个循环的话 那就循环到23位)

4:指数部分+127 的二进制表示

5:符号位

==》符号位(1) + 指数位(8) + 尾数(23)à计算出浮点数的二进制表示

拓展:内存分布  以字节(1字节8位)为单位逆序排放

                                                                                           20103140:58:10KR

 

 

 

最后

以上就是殷勤早晨为你收集整理的IEEE浮点数表示法总结的全部内容,希望文章能够帮你解决IEEE浮点数表示法总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部