原码 补码

本文解释了计算机中整数的二进制存储方式,重点介绍了补码的概念及其如何解决减法运算的问题,使得加法和减法可以使用同一套电路实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 整数在计算机中都是以二进制的方式存储的,例如 2 = 0000 0010。最高位是符号位,0表示正数,1表示负数。正数的情况很容易理解,但是负数存储的是补码
 ,-2 = 1111 1110。

(一) 概念
以8位的字长为例
正数补码==原码
负数补码为,除符号位外取反,然后加1

 +2 =  0000 0010[原码] = 0000 0010[补码]
 -2 =   1000 0010[原码] =  1111 1110[补码]

(二) 为什么要用补码
补码是为了解决减法的问题。因为二进制表示中最高位是符号位,如果要让计算机电路在计算过程中识别符号位,会让电路变得复杂,所以干脆让符号位直接参与运算。

  • 2 + 3 = [0000 0010] + [0000 0011] = [0000 0101] = 5
  • 2 - 3 = 2 + (-3) = [0000 0010] + [1000 0011] = [1000 0101] = -5

显然,在减法的情况下会出问题。如果换做补码的话

  • 2 + 3 = [0000 0010] + [0000 0011][补码] = [0000 0101][补码] = 5
  • 2 - 3 = 2 + (-3) = [0000 0010][补码] + [1111 1101][补码] = [1111 1111][补码] = [1000 0001][原码] = -1

很好的解决了减法的问题,将加法和减法合并为了一套电路。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值