浮点数存储原理

一. 将一个float型转化为内存存储格式的步骤为:

1、先将这个实数的绝对值化为二进制格式

2、将这个二进制格式实数的小数点左移或右移n位,直到小数点移动到第一个有效数字的右边。

3、从小数点右边第一位开始数出二十三位数字放入第22到第0位。 

4、如果实数是正的,则在第31位放入“0”,否则放入“1”。

5、如果n 是左移得到的,说明指数是正的,第30位放入“1”。如果n是右移得到的或n=0,则第30位放入“0”。

6、如果n是左移得到的,则将n减去1后化为二进制,并在左边加“0”补足七位,放入第29到第23位。

    如果n是右移得到的或n=0,则将n化为二进制后在左边加“0”补足七位,再各位求反,再放入第29到第23位。

或者使用127 +/- 指数位,左移就+3,右移就-3。因为128就是首位为10000000,127就是01111111所以与上述方法同理。

 

二. 以8.25为例:

1 ---> 1000.01

2 ---> 1.00001

3 ---> 小数点后的数放入尾数位置

00000000000001000000000000000000

4 ---> 正数第一位置1

10000000000001000000000000000000

5 ---> 因为是左移的,指数位置第一位置1。

11000000000001000000000000000000

6 ---> 因为是左移的,指数减一后化为二进制。

11000001000001000000000000000000

 

三. 将-8.25转成浮点数:因为正负只用01来标记,其余只按绝对值来操作,所以只将31位变为1即可。或者使用127 + 3亦可。

11000001000001000000000000000000

 

四. 将0.25转换为浮点数

1 ---> 0.01

2 ---> 1.00 二的负二次方

3 ---> 小数点后的数放入尾数位置

00000000000000000000000000000000

4 ---> 正数第一位置1

10000000000000000000000000000000

5 ---> 因为是左移的,指数位置第一位置0。

10000000000000000000000000000000

6 ---> 因为是左移的,指数减一后化为二进制。-2 - 1 = -3 或 127 - 2

10111110100000000000000000000000

注意:因为几乎任何数(0除外)按照此算法表示都是1.xxx,所以1可以可以不用计入浮点数。

 


 


  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值