计算机中整数数据存储方式与读取实例
1、vs查看数据在计算机中的存储
首先获取数据在内存中的地址:(使用%p打印地址,加#可以显示八进制和十六进制前缀0和0x)
printf("the %d adress is %#p\n", test, &test);
然后使用地址查看内存中的数据:
先在程序中设置断点,然后开始调试
调试——窗口——内存有四个内存可以使用,方便比较,选择一个或几个会出现下图
在地址中输入数据地址可查看数据地址中存储的数据。
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;
}
查看数据:
int test = -100;
unsigned int un = 3000000000;
short end = 200;
long big = 65537;
long long verybig = 12345678908642;
归纳上述图片内容:
从上图可以看出整数存储正数(原码、反码、补码都相同)以原码形式存储,负数(原码:最高位为符号位为1,其他位表示数据;反码:在原码基础上符号位不变,其他位取反;补码:在反码基础上加1)以补码形式存储;负数以补码形式存储可以把a-b运算变成a+(-b)运算。
3、数据在内存上的读取方式
数据输出结果:
分析:
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位。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具