【每日一发】同样4个字节的浮点数和整数为什么表达的范围有很大差异

      如果突然问这个问题,不知道是不是每个人都能思路清晰的应答。下面简单的说一说这个区别

       32位的整数,最大值是21亿左右,占用4个字节的浮点数,最大值大约是3.4×10^38.

       虽然两者占用的空间一致,但是其组织数据的方式是完全不同的。

       先说说比较属性的整形吧,为了简单,只说正数,符号位1位,值为0,后面的全部是111, 0111 1111 1111 1111 1111 1111,16进制的表示为 7F FF FF FF.

       浮点数的表示方法为: 符号位 + 阶码 + 尾数,为了简化,这里也只是考虑正数。4字节的浮点数,符号位1,解码有8位,而尾数就有23位。 其中阶码在实际中用移码表示,尾数就是浮点数内部可以存储表达的真实数据部分。

       先看一个简单的例子。

       30.5如何表示:

       正数:符号位为0

       30用二进制表示就是  11110

       0.5用二进制表示是: 0.1

            小数转换为二进制,就是用二成  5 × 2 = 10,那么这里就是0.1了

       那么综合起来就是   11110.1,那么这样看起来,该数亦可以向左移动4次(阶码),即 真实的尾数就是1.11101,众所周知,二进制就0,和1,而从尾数的特点可以看出,最原始的尾数一定是 1.xxxx,即第一位恒为1,这样,这个1就可以省略,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值