计算机中整数数据存储方式与读取实例

1、vs查看数据在计算机中的存储

首先获取数据在内存中的地址:(使用%p打印地址,加#可以显示八进制和十六进制前缀0和0x)
printf("the %d adress is %#p\n", test, &test);

image

然后使用地址查看内存中的数据:

先在程序中设置断点,然后开始调试
image

调试——窗口——内存有四个内存可以使用,方便比较,选择一个或几个会出现下图
image
在地址中输入数据地址可查看数据地址中存储的数据。

2、数据在内存中的存储方式

程序示例:

点击查看代码
#include <stdio.h>
int main(void)
{ 
	int test = -100;
	unsigned int un = 3000000000; /* int为32位和short为16位的系统 */
	short end = 200;
	long big = 65537;
	long long verybig = 12345678908642;
	printf("the %d adress is %#p\n", test, &test);//%p输出数据存储地址
	printf("the %u adress is %#p\n", un, &un);
	printf("the %hd adress is %#p\n", end, &end);
	printf("the %ld adress is %#p\n", big, &big);
	printf("the %lld adress is %#p\n", verybig, &verybig);
	printf("un = %u and not %d\n", un, un);
	printf("end = %hd and %d\n", end, end);
	printf("big = %ld and not %hd\n", big, big);
	printf("verybig= %lld and not %ld\n", verybig, verybig);
	getchar();
	return 0;
}

输出数据地址:

image

查看数据:
int test = -100;
image

unsigned int un = 3000000000;
image

short end = 200;
image

long big = 65537;
image

long long verybig = 12345678908642;
image

归纳上述图片内容:
image
从上图可以看出整数存储正数(原码、反码、补码都相同)以原码形式存储,负数(原码:最高位为符号位为1,其他位表示数据;反码:在原码基础上符号位不变,其他位取反;补码:在反码基础上加1)以补码形式存储;负数以补码形式存储可以把a-b运算变成a+(-b)运算。

3、数据在内存上的读取方式

数据输出结果:
image

分析:
unsigned int un = 3000000000;
printf("un = %u and not %d\n", un, un);
数据un在内存中的存储方式16进制表示为:b2 d0 5e 00,unsigned int为32位,int也为32位,可以全部读取,以有符号数输出为-1294967296。

short end = 200;
printf("end = %hd and %d\n", end, end);
数据end在内存中的存储方式16进制表示为:00 c8,short为16位,int为32位,以%d形式输出可以全部读取,输出结果为200。

long big = 65537;
printf("big = %ld and not %hd\n", big, big);
数据big在内存中的存储方式16进制表示为:00 01 00 01,long为32位,而short为16位,以%hd形式输出,不能全部读取数据,只能截取其中的16位,输出结果为1。

long long verybig = 12345678908642;
printf("verybig= %lld and not %ld\n", verybig, verybig);
数据verybig在内存中的存储方式16进制表示为:00 00 0b 3a 73 ce 4c e2,long long为64位,long为32位,以ld%输出,不能完全输出,只能截取部分数据,截取高32位输出结果为2874,截取低32位输出结果为1942899938,实际输出结果为194289938;可以看出实际截取低32位。

总结:整数在计算机中以补码形式存储;在输出时会根据输出格式从内存中由低地址到高地址取数据。

posted @   亭风雨声  阅读(528)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示