浮点数 到 IEEE浮点数 的转换

IEEE浮点数

浮点数编码转换采用的是IEEE规定的编码标准,float和double的转换方式相同,但是取值范围不同,编码方式有些许区别.IEEE规定的浮点数编码会将一个浮点数转换成二进制数.以科学计数法划分,将浮点数分为3个部分:符号,指数,尾数 

浮点类型:float转IEEE格式

在存储方式上都是遵守IEEE浮点数的规范

Float的存储方式

 

Double的存储方式

 

举例说明:

8.25转为浮点存储

  1. 转二进制:8.25   <=>   (二进制)1000.01
  2. 算指数: 找最高有效位                                                                                                                         1000.01  = 1.0001*2的3次方 小数点左移3位 指数为3                                                               小数点移动规则:找最高有效位   1为最高有效位 
  3. 填表

                符号位:本来是正数就填0 本来是负数就填1

                指数部分:

                        1.第一种方式

                                第一位 如果上面的小数点左移就填1 右移就填0 指数为3 现在用3-1等于2                                       二制是10 所以1000 0010

                        2.第二种方式

                                  我们知道指数为3,现在和127相加(127+3 = 130 左移就是+ 右移就是-),

                                  转为二进 制1000 0010  这里的127不做深究

                尾数部分:1.00001的小数部分填写到尾数 不够23补0

符号位(1)

指数部分(8)

尾数部分(23位)

0

1000 0010

00001000000000000000000

0100 0001 0000 0100 0000 0000 0000 0000

IEEE浮点数:41040000

 

浮点数为负数

-8.25

符号位(1)

指数部分(8)

尾数部分(23位)

1

1000 0010

00001000000000000000000

小数点右移动

1.0.25  <==>  0.01(二进制)

2.本着最高位为有效位(1)的原则 向右移动2次

0.01 = 1.0*2的-2次方 指数为-2

3.填表

        符号位:0.25正数 填1

        指数部分:

                第一种方式:

                    刚是右移动小数点 最高位0   指数为-2 - 1 等于-3  -3的二进制  1111 1101 填写指        

                    数的时候最高位已经是0 所以 0111 1101

                第二种方式

                    127-2=125      125的二进制 0111 1101

                尾数部分:1.0 尾数部分是23个0

符号位(1)

指数部分(8)

尾数部分(23位)

0

0111 1101

00000000000000000000000

0011 1110 1000 0000 0000 0000 0000 0000

3e80 0000

 

 IEEE浮点数转float

举例:

IEEE浮点数:41040000

41040000 转二进制 0100 0001 0000 0100 0000 0000 0000 0000

填表

符号位(1)

指数部分(8)

尾数部分(23位)

0

10000010000 0100 0000 0000 0000 0000

反推:

取出尾数部分

000 0100 0000 0000 0000 0000

最高有效位为1

1.000 0100 0000 0000 0000 0000

现在小数点的位置是不对的 我们还要看指数部分10000010 十进制是  130

还记得之前的127吗 130和127相差3 130大于127说明指数是+了一个数字 也就是3

也就是之前右移动了3位 最后得到

1000.01 转十进制 8.25

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值