数字电路技术基础-1-补码

了解何为补码

在数字电路中,数字的正负采用了特别的方式表达:在二进制数前增加一位符号位
并且规定,当符号位为0时,表示该二进制为正数;当符号位为1时,表明该二进制为负数。

二进制也同样需要进行加减运算,如果遇到减法,我们若仍然采用原码来表示,那必然会大大增加运算的工作量。
在这一背景下,补码诞生了,运用补码可以很好的解决这个问题(尽管这是有代价的

下面我们举一个例子来借以说明补码的作用:
假设你发现手表的时间没有对准,为了使其对准正确的时间,我们需要调整其位置,这时有两条路可供我们选择:
前进,或是倒退。
倘若将“倒退”比作减法,那么”前进“无疑就是加法。

当然,严格意义而言,这并不是加法

细心的同学可能已经发现了:
前进必然带来手表多转一圈,反映在小时制上,即有一个12小时的进位被我们忽略了

这正是补码的思想所在。

舍弃进位的条件下,减去某个数可以用加上它的补码来代替

如何得到补码

下面介绍如何得到二进制数字 N N N的补码 ( N ) C O M P (N)_{COMP} (N)COMP

  • N N N为正数时
    ( N ) C O M P = N (N)_{COMP}=N (N)COMP=N

  • N N N为负数时

    定义反码 ( N ) I N V = ( 2 n − 1 ) − N (N)_{INV}=(2^n-1)-N (N)INV=(2n1)N
    或许这样的语言您并没有直观感受,但其含义十分直观:将 N N N按位取反后即得到 ( N ) I N V (N)_{INV} (N)INV

注意:不要对符号位进行操作

此时有关系式 ( N ) C O M P = ( N ) I N V + 1 (N)_{COMP}=(N)_{INV}+1 (N)COMP=(N)INV+1

当N为负数时,另一种得到补码的办法是:找到从右往左的第一个1,其左侧的数字按位取反,其右侧的数字保持不变

补码运算实例

给定 x 1 = 0001000 , x 2 = − 0100101 x_1=0001000,x_2=-0100101 x1=0001000,x2=0100101,试利用补码计算 x 1 + x 2 x_1+x_2 x1+x2

解:注意到这里使用正负号作为符号位,因此无需再加数字符号位
x 1 + x 2 = ( x 1 + x 2 ) C O M P = x 1 + ( x 2 ) C O M P = 0001000 + 1011010 = 0100010 \begin{aligned}x_1+x_2&=(x_1+x_2)_{COMP}\\&=x_1+(x_2)_{COMP}\\&=0001000+1011010\\&=0100010\end{aligned} x1+x2=(x1+x2)COMP=x1+(x2)COMP=0001000+1011010=0100010

若计算结果有进位,则应当舍去进位

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值