二进制

本文详细解析了计算机中整数的表示方式,包括原码、反码、补码及其在不同编译器下的应用,同时介绍了整数的边界值及基于此的常见操作如取反、求补、加减法等。

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

原码 1000 0001 (其中第一个1为符号位)
反码 1111 1110 (符号位不变,其余的取反)

补码 1111 1111 (原码取反+1 ,符号位不变) 计算机中一般使用补码表示 因为补码进行+-*/运算后 结果仍为补码

不管是在32还是在64位编译器处理下,int都是4字节32位,所以整数范围是- 2147483648~2147483647
计算机负数是以其正数的原码的补码形式存储的,则有2147483648=231的原码为10...0(31个0),其反码为01...1(31个1),所以-2147483648表示为补码是反码加1为10...0(31个0)。因此:
1、~i:取反操作,为01...1(31个1),即231-1=2147483647;
2、 -i:相当于求其补码,取反,再加1。取反, 10...0(31个0)-> 01...1(31个1),再加1, 10...0(31个0),该二进制表现出来仍旧为- 2147483648;
3、1-i:即-i加1,因为不会溢出,直接加减法就行(当然二进制加减也不会错只是要注意负数是补码表示的),-2147483648+1=- 2147483647, 其实-2147483647的二进制形式也就是 10...0(31个0)+1= 10...01(30个0);
4、 -1-i:即-i减1,因为会溢出,所以还是要二进制加减,则为 10...0 (31个0)-1= 01...1(31个1),即 2 31-1=2147483647。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值