700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > C语言int类型和float浮点型数据在内存中的存储方式

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

时间:2022-10-26 09:48:03

相关推荐

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;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。