首页 > 编程知识 正文

正数加负数的补码吗,正数负数原码反码补码

时间:2023-05-06 02:05:51 阅读:191425 作者:4370

在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)的过程浓缩


版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。