【C语言】补码

整数以二进制“补码”格式存储

正数的补码=正数的原码

+5  0000 0101 原码=补码

负数的补码=负数的原码按位求反(符号位保持1不变),末位加1

-5  1000 0101 原码

     1111 1010 补码

     1111 1011 补码  其值为:-1*2^7+1*2^6+1*2^5+1*2^4+1*2^3+0*2^2+1*2^1+1*2^0=-5

在int型为32位的硬件环境中,int正数的补码范围是0000 0001~ 0111 1111,即1~2^7-1

int负数的补码范围是1000 0000~ 1111 1111即-2^7~-1,

因此int型整数的取值范围是-2^7~2^7-1

关于计算机中为什么要使用补码来存储整数,可以参考这篇文章【原创】计算机为什么要用补码? - 知乎 (zhihu.com),但目前还不是很理解。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值