C语言中的整形存储和浮点型存储

了解并清楚整形数据和浮点型数据的存储规则对学好C语言至关重要,那么接下来就谈谈他们的规则吧。

一.整形数据

整形数据在转换成二进制时会有三种形式——原码、反码和补码。

1.原码:就是由整形数据直接转换成的二进制序列。

2.反码:原码符号位(若数据是有符号数,原码最高位是符号位)不变,其他位按位取反。

3.补码:反码加一得补码。

注:正数和无符号整形三码统一,即原码就是反码和补码。

举一个简单的例子:

二.浮点数数据

根据IEEE754规定任何一个二进制浮点数都可以写成(-1)^S*M*2^E,存的时候只存S、M、E即可其中S占一位是0/1,是0时代表是正数,是1时代表是负数,M(1<=M<2)是有效位,在存时会省略1即可提高一位的精度,E是指位数,规定E存无符号数,所以在浮点数为32位时占8位且E=E真实值+127,在浮点数为64位时占11位且E=E真实值+1023。具体的IEEE754规定可参考链接。   IEEE 754_百度百科 (baidu.com)

举个例子:

正常情况:从存的形式获得S,E真=E-127,M补1. 后得出相应的二进制,再转成浮点数。

特殊情况:1.若E为全0,则代表是一个非常小接近于零的数,这时就直接E真=1-127,M前直接补0.

2.若E为全1,则代表是一个非常大的数,但仍按正常情况反向得结果。

整形和浮点型的存储大致就是这样,有兴趣可以在VS等编译器上试一试。欢迎大家指出我的不足。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值