深入理解计算机浮点数存储

3 篇文章 0 订阅

根据IEEE 754 浮点标准

V = (-1)^s * M * 2^E

s: 符号 s决定这数是负数(s=1)还是正数(s=0)
M: 尾数 M是一个二进制小数
E: 阶码 E的作用是对浮点数加权,这个权重是2的E次幂
单精度表示
+---------+----------------+------------------------+
|   s     |        E       |           M            |
+---------+----------------+------------------------+
    1             8                   23

双精度
+---------+----------------+------------------------+
|   s     |        E       |           M            |
+---------+----------------+------------------------+
    1             11                  52

根据十进制数计算二进制

4.25 单精度二进制如何表示
表示方法: 整数部分二进制.小数部分二进制
整数部分二进制如何计算:
整数部分除以2取模得到二进制数,得到的整数部分继续除以2取模,直到除以2等于0结束,取模所得整数位继续向左添加。
12
=> 12 / 2 = 6, 12 % 2 = 0
=> 6 / 2 = 3, 6 % 2 = 0
=> 3 / 2 = 1, 3 % 2 = 1
=> 1 / 2 = 0, 1 % 2 = 1
=> 1100

小数部分二进制如何计算:
将十进制的小数部分乘2,将所得结果的整数位作为二进制的位。舍弃乘2所得结果的整数部分,如果剩余部分为0,计算结束。否则继续乘2,进行取整操作(所得整数位继续向右添加)
0.25
=> 0.25 * 2 = 0.5
=> 0.5 * 2 = 1.0
=> 0.01

=> 0100.01
=> 1.0001 * 2^2
=> s = 0, E = 2 + 127, M=000100000000000000000000 (隐藏了整数部分1.)
=> E = 129 => 10000001
完整表示:
0 10000001 000100000000000000000000

根据二进制计算十进制数

0 10000001 000100000000000000000000

10000001
=> 1 * 2^7 + 0 * 2^6 + 0 * 2^5 + 0 * 2^4 + 0 * 2^3 + 0 * 2^2 + 0 * 2^1 + 1 * 2^0
=> 128 + 0 + 0 + 0 + 0 + 0 + 0 + 1
=> 129

000100000000000000000000
=> 0 * 2^-1 + 0 * 2^-2 + 0 * 2^-3 + 1 * 2^-4
=>  0.0625

=> -1^0 * (1 + 0.0625) * 2^(129 - 127)
=> 1 * 1.0625 * 4
=> 4.25
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值