整数内存中存储

本文详细解释了整数在编译器(如VS)中的内存存储过程,涉及原码、反码和补码转换,以及有符号和无符号类型的处理。以int类型为例,展示了-3从输入到内存储存的完整流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于整数和浮点数在内存中的储存,在编译器(本人是使用vs)中是两种不同的储存方式。

整数

计算机一般储存整形一般分为3部,第一步为生成原码,第二步形成反码,最后储存补码。拿int类型做实例。

第一步生成原码:int类型会向编译器申请4个字节(x84的条件下),也就是32个bit位。然后会把你输入的10进制的数字,转换成2进制的数字。在转换2进制的过程中,计算机会检测的类型是无符号的整形(unsigned int)还是有符号的整形(int)。如果是有符号的整形(int)他第一个bit位子会变成符号位(有负号就是1,正数为0),拿-3举例子(10000000 00000000 00000000 00000011)

第二步形成反码将原码的符号位不变,其他位依次按位取反就可以得到反码。-3就变更成(11111111 11111111 11111111 11111100)

第三步储存补码:反码+1就得到补码。在计算机内存中-3的储存应该是(11111111 11111111 11111111 11111101)

之后如果计算机要调用,会把储存的补码转换成原码,最后变成10进制给你。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值