整数与浮点数内存存储方式

整数:

整数存储为int类型,4个字节存储,先按照首位符号位,其余均为二进制表示。

若为非负数,原反补码相同。

若为负数,符号位不动,将其余位置全部取反得到反码,再+1得到补码。(存储时存的是补码

然后再按照机器的大小端类型进行存储。

大小端只会在存储地址上有所区别,不对存储地址进行修改基本没有影响。

浮点数:

浮点数表示为:((-1)^S)*M*(2^E)。

S只能为0或1表示正负。

M为1到2之间的一个数,如5.5,二进制表示为101.1,那么M为1.011。

E为指数。得到M时右移几位那么E即为己。左移则为负数。

对于32位 浮点数(float),最高的一位存储符号位S,接着的八位存储指数E,剩下的23位存储有效数字M。
对于64位浮点数(double),最高的一位存储符号位S,接着的11位存储指数E,剩下的52位存储有效数字M。
由于在计算机内存储时,M的第一位总是1,所以M的第一位会被省略,等到读取时再使用。其目的是可以增加一位有效数字来增加精度。

E的特点:

首先,E为无符号整数。
由于在科学计数法中,E可以出现负数,因此规定,转入内存时E的真实值必须加上一个中间数,对于8位的E,这个中间数为127,对于11位的E,这个中间数为1023。

比如2^10的E为10,所以保存成32位浮点数时,必须保存成10+127=137,即10001001。

E的特殊情况:

E全为0,这时浮点数整数E为1-127=-126(或1-1023),即为真实值。

这时有效数字M取出时不再加上第一位的1,而是还原为0.xxxxxxxx小数。

这样做是为了表示正负0以及接近于0的很小的数字。
E全为1,这时如果有效数字M全为0,表示正负无穷大(正负取决于符号位S)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值