概述
标 题:IEEE浮点数表示法总结
整理者:CmdHack
一:小数部分为0(123456.0)
二:整数部分为0(0.125)
三:小数整数非0(123456.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
3:共8位,可以表示范围是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位)为单位逆序排放
2010年3月14日0:58:10于KR
最后
以上就是殷勤早晨为你收集整理的IEEE浮点数表示法总结的全部内容,希望文章能够帮你解决IEEE浮点数表示法总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复