计算机位运算中的原码反码补码

本文详细介绍了计算机中正数和负数的原码、反码和补码表示,特别讨论了负数在求补运算和求补码过程中的差异,并通过一个C语言代码示例解释了位运算的过程,包括对最小负整数进行取反、求补运算的具体计算。
摘要由CSDN通过智能技术生成
链接:https://www.nowcoder.com/questionTerminal/5f5f30bea94748fe903ff5616e73de00
来源:牛客网

首先,-2147483648这个数为32位int所能表示的最小负整数,而如果原码为 1000 0000  0000  0000  0000  0000  0000  0000(表示-0) ,其反码应为数值位取反,符号位不变,即1111  1111  1111  1111  1111  1111  1111  1111,
补码为反码+1 即为0 000 0000  0000  0000  0000  0000  0000  0000 (最高位溢出,舍去),
而+0 的原码、反码、补码均为 0 000 0000  0000  0000  0000  0000  0000  0000,
如果用 1000 0000  0000  0000  0000  0000  0000  0000作为 -2147483648的原码,则会导致 -2147483648和0的补码表示一样,因此,计算机中规定用 1000 0000  0000  0000  0000  0000  0000  0000来作为 -2147483648的补码,以确保-2147483648~2147483647都有唯一的补码表示。

总结以上内容:正数的原码、反码、补码形式一致,负数的反码为原码的数值位取反,补码为反码+1也即是原码的数值位取反再+1,计算机中以补码表示数据和运算,而32位最小负整数的补码为 1000 0000  0000  0000  0000  0000  0000  0000

int main(){

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值