c语言整型变量的存储形式,C语言中整型变量的内存存储形式

本文介绍C语言中整型变量在内存中的存储形式。主要分析二进制和十六进制的形式。

示例代码如下:

#include #include #include int main()

{

int a = -7;

char string_2[35] = "";

char string_16[35] = "";

/* 打印出系统中int类型所占的字节数 */

printf("sizeof(a) is %d\n", sizeof(a));

printf("sizeof(int) is %d\n", sizeof(int));

/* string_2中存储整型变量a的二进制表达形式 */

itoa(a, string_2, 2);

printf("integer a = %d\nbinary a = %s\n", a, string_2);

printf("length of string_2 a is %d.\n", strlen(string_2));

/* string_16中存储整型变量a的十六进制表达形式 */

itoa(a, string_16, 16);

printf("integer a = %d\nHexadecimal a = %s\n", a, string_16);

printf("length of string_16 a is %d.\n", strlen(string_16));

system("pause");

return 0;

}

上述代码的运行结果如下:

sizeof(a) is 4

sizeof(int) is 4

integer a = -7

binary a = 11111111111111111111111111111001

length of string_2 a is 32.

integer a = -7

Hexadecimal a = fffffff9

length of string_16 a is 8.

从上述代码及其运行结果能够看出:

a)-7对应内存中的二进制值为11111111111111111111111111111001;对应的十六进制值为fffffff9,通过对二进制值进行求补码的操作:

1. 除符号位之外,进行取反操作:11111111111111111111111111110110;

2. 再加1操作:1111 1111 1111 1111 1111 1111 1111 0111,此值为原码,对应的数值是-7。

通过上述运算,证明了-7在内存中是以二进制补码的形式进行存储的。而十六进制仅仅是对二进制的补码进行了整合,同样是以补码的形式进行存储的。

b)-7的补码 1111 1111 1111 1111 1111 1111 1111 1001 中,前面28位都是符号位,只有最后4位是数值位。在进行运算时,把符号位标出来有利于更清晰地进行运算和理解原码与补码的关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值