【整数的二进制表示】原码,反码,补码

众所周知,整数在内存中存储的是 补码

在涉及到对二进制位进行操作的程序时,清楚“三码”的关系和转换方式是非常重要的。

整数的二进制表示可以分为三种:原码 | 反码 | 补码

其中正整数的三码均相同,负数的三码则需要自己计算

  1. 原码

把一个整数按照正负直接翻译成二进制就是原码

例:3 的二进制原码表示为 “00000000 00000000 00000000 00000011”

-5 的二进制原码表示为 “10000000 00000000 00000000 00000011”

  1. 反码

原码符号位不变,其他位按位取反就是反码

例:-3 的二进制反码表示为 “11111111 11111111 11111111 11111100”

  1. 补码

反码+1

例: -3 的二进制补码表示为 “11111111 11111111 11111111 11111101”

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在计算机中,数值表示通常使用二进制,而为了进行运算和存储,我们需要不同的数制表示形式:原码反码补码。这些方法主要应用于有符号整数,特别是对于负数的表示。 **1. 原码(Unsigned):** - 对于正数,原码就是它的二进制表示。 - 对于负数,原码是在最高位(符号位)为1的情况下,剩下的数不变。 例如,十进制数-5的原码二进制中是 `10000101`。因为最高位是1,表示负数。 **2. 反码(One's Complement):** - 正数的反码是其对应的原码。 - 负数的反码是其原码逐位取反(包括符号位),然后加1。 例如,-5的反码是 `11111010`,因为原码是 `10000101`,取反后得到 `01111011`,加1得 `11111010`。 **3. 补码(Two's Complement):** - 补码是计算机中最常用的表示负数的方法。 - 正数的补码等于其原码。 - 负数的补码是其反码加1。 同样,-5的补码是 `11111010`,因为反码 `11111010` 加1等于 `11111011`。 以下是简单的Python代码示例,用于将十进制数转换为这三种表示: ```python def convert_to_binary(num, mode='decimal'): if mode == 'decimal': return format(int(num), '08b') elif mode == 'unsigned': return bin(num)[2:] elif mode == 'ones_complement': return format(~int(num), '08b') elif mode == 'two_complement': return format(int(num) & ~1, '08b') # 使用补码规则 # 示例 decimal_num = 5 print("十进制:", convert_to_binary(decimal_num)) print("原码:", convert_to_binary(decimal_num, 'unsigned')) print("反码:", convert_to_binary(decimal_num, 'ones_complement')) print("补码:", convert_to_binary(decimal_num, 'two_complement')) ``` 如果你对这些概念或代码有任何疑问,请告诉我,我会进一步解释或者提供相关的问题供你深入学习

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值