C语言int类型和float浮点型数据在内存中的存储方式

  int 类型在内存中占4个字节,而一个字节是8个比特位,所以int类型占32个比特位。

float类型在内存中同样也占4个字节,所以其也是占32个比特位。

一个比特位就是一个0或1,所以其在二进制位数如下

 在这个中每位可能是0,也可能是1,不同的0、1组合,就表示不同的int类型数或float类型数。

Int类型的存储方式

        首先明白一点,int类型在内存中存储是以补码的形式

        明白第二点,正数的原码、反码、补码都相同,即写出原码,同时也是他的反码和补码。

而对于负数来说:

     原码:整数以二进制写下的形式就是原码。

     反码:除符号位(二进制的首位,首位是0表示正数,首位是1表示负数)外,其他位按位取反,就是反码。

     补码:反码+1,就得到补码。

例1

 

 如例1我们就写出来了正数9和负数-9的二进制码,但是在内存中是以16进制进行存储显示的。

一位16进制位数代表4位二进制数,所以就得到:

 所以

9在内存中存进去的就是:

                00 00 00 09;

-9在内存中存进去的就是:

                ff ff ff f7;

:编译器存储内容会采用两种存储节序(大端存储,小端存储),不同的编译器有不同的存储节序。对于大端存储,9的16进制存进去会变成是:00 00 00 09;对于小端存储,9的16进制存进去是:09 00 00 00。 

       

Float类型的存储方式 

        float类型的存储方式和int类型不同,所以上面的原码、补码、反码也就不使用于float类型。

在C语言中,浮点型二进制的存储按照IEE 754标准,也就是任何一个浮点型数可以表示为:

      (-1)^S*M*2^E              其中1<=M<2

但是IEE 754又有一项规定,

       由于M的整数位始终为1,所以可以省去,记省去1后的M为M';

       由于E是一个无符号整数,所以对于float类型E要加上127,记加上127后的E为E'

float的存储顺序为:

例:

 所以,

        float i=5.5,在内存中存的就是:

                40 b0 00 00;

         float a=-1.5,在内存存的就是:

                bf b0 00 00;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值