负数补码为正数取反+1的图形化解释

在CSAPP中关于补码有以下论述:



一个数从左边1开始的到最右边的所有位取反相加将使这个数从左边1开始的到最右边的所有位全变为1,如对w=4,中5的二进制原码0x0101根据前面说的进行取反相加后为0x0111(7),如果再加1则变为0x1000(8)…………推导1

-5的补码表示为1011,结合公式2-3可以知道其可以看做是  -1*2^3+0*2^2+1*2^1+1*2^1= -8+(2+1)=-5,

而-5=(8-5)+(-8),第一个括号中8-5即为0x1000-0x0101,根据上面说的推导1,8-5=0x1000-0x0101=(0x0101取反加1),即0x0011

根据公式2-3,加上-1*2^3即0x1000,为1011


因此,-5的补码是5的带符号二进制原码0x0101,整体取反+1变为0x1011, 可以看做是(8-5)+(-8)的过程浓缩


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值