原码,反码,补码的意思与关系

假设我们使用8位二进制来表示整数,在这个例子中,我们将关注正数9和负数-9的表示形式。

原码(正数):

正数9的原码是二进制表示的本身,即0000 1001。
原码(负数):

负数-9的原码是将绝对值9的二进制表示形式前面加上符号位1,即1000 1001。
反码(负数):

负数-9的反码是将原码中除符号位以外的每一位取反。
对于负数-9,符号位是1,其他位取反后为0111 0110。
补码(负数):

负数-9的补码是将反码加1。
对于负数-9,反码是0111 0110,加1后得到补码0111 0111。
在计算机中,正数和负数的存储方式是不同的。正数直接使用原码表示,而负数使用补码表示。这种表示方式使得计算机可以更方便地进行加减运算。

如果我们要将负数-9与正数9相加,我们可以按照补码的方式进行计算:

0000 1001   (正数9的原码)
+ 1111 0111   (负数-9的补码)
------------
  0000 0000   (结果为0)

注意,最终的结果是0,这是因为正数9和负数-9的补码相加等于0。

# include <stdio.h>

int main()
{
    printf("%x\n",-9);
    return 0;
}


/*
-9 是int类型在内存的地址是4字节

源码:1000 0000 0000 0000 0000 0000 0000 1001

反码:1111 1111 1111 1111 1111 1111 1111 0110

补码:1111 1111 1111 1111 1111 1111 1111 0111

16进制:ff ff ff f7
*/

通过这个例子,希望你能更好地理解原码、反码和补码之间的关系,以及它们在计算机中表示整数的方式。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值