引言:

我们都知道,在计算机中的加减运算都是由补码来实现的,那么,计算机是如何运用电路来实现补码的加减的呢?在计算机中,所有的加减运算其实都变成了加法后来参与运算的,那么仅需要一个加法器就可以实现了。请看下面内容。

(一)全加器的构成

1.什么是全加器

全加器英语名称为full-adder,是用门电路实现两个二进制数相加并求出和的组合线路,称为一位全加器。一位全加器可以处理低位进位,并输出本位加法进位。多个一位全加器进行级联可以得到多位全加器。

(1)一位全加器逻辑电路图如下

该一位全加器的求和部分Si由两个异或门组成,进位部分Ci+1由与非门组成。

(2)简单的直观表示

全加器由两个二进制数字Ai,Bi和一个进位输入Ci相加,产生一个和输出Si,以及一个进位输出Ci+1。

下表中列出一位全加器进行加法运算的输入输出真值表。

(3)逻辑表达式

根据所示的真值表,三个输入端和两个输入端可按如下逻辑方程进行联系:

Si=Ai⊕Bi⊕Ci
Ci+1=AiBi+BiCi+CiAi

看到这里你想起了什么?是不是补码运算的相加、进位、判断溢出?


(二)补码运算的二进制加法/减法器的逻辑结构

1.补码加减运算法则

(1)对于定点数的加法

定点小数:[X]补+[Y]补=[X+Y]补     (mod 2)
定点整数:[X]补+[Y]补=[X+Y]补     (mod 2^n+1)

(2)对于定点数的减法

定点小数: [X-Y]补=[X]补+[-Y]补 (mod 2)
定点整数: [X-Y]补=[X]补+[-Y]补    (mod 2^n+1)

可以看出,在补码运算中,减法都变成了了加上该补码负数的形式。

(3)补码取负数:

即[X]补包括符号位在内的各位取反,末位加一后变成[-X]补

那么如何使用电路实现?如下

2.多位全加器实现补码加减运算

(1)图中字母代表含义

字母 含义
M 方向控制 (即控制做加\减法运算)
An 输入的 [X]补
Bn 输入的 [Y]补
Cn 进位输入\输出
Sn 结果输出

(2)实现加减

1.加法运算

当时加法运算时,我们的控制输入M就会起到相应的作用,当M=0时,他与Bn相连,做异或处理,此时可见结果就等于Bn本身,此时Bn输入到一位的全加器中,与An输入相加,在n=0处还加上了M的0,对结果无影响。

2.减法运算

而当M=1时,进行减法运算,此时的Bn与M=1进行异或,得到的就是Bn的反码,而最低位的M=1做一个加数进入到运算中就是:An+(Bn+1),此时的1在最低位。那么就可以看到,其实这时的M作用一就是将[Y]补转换成[-Y]补,使整个电路做补码的减法运算。


(三)判断溢出

而在这里,就是采用的单符号位法来判断是否溢出

(1)单符号位判断法

1.当最高数值位产生进位而符号位不产生进位时,产生上溢;
2. 当最高数值位不产生进位而符号位产生进位时,产生下溢。

简单来讲也就是:

总:只要最高数值位与符号位 “都产生进位或都不产生进位(同号)” 时不溢出,否则溢出。

那么我们从电路图中就可以看出:

1.若Cn与Cn-1同号,则经过异或门结果为0,不溢出;
1.若Cn与Cn-1异号,则经过异或门结果为1,溢出;

Cn我们在前面说过,就是输出的进位。

(2)实例图


如图所示,这次做的为:(+8) + (+12) = 20 即 001000 + 001100 = 010100 没有溢出

—The End—

使用全加器实现补码的加减运算相关推荐

  1. 考前自学系列·计算机组成原理·补码定点加减运算和溢出判断,浮点数的加减运算,原码的乘法

    补码定点加减运算和溢出判断 浮点数的加减运算 原码乘法

  2. 微型计算机原理计算两数和,微型计算机原理及汇编语言 第2章-2 补码及加减运算.ppt...

    微型计算机原理及汇编语言 第2章-2 补码及加减运算 2.4 数的定点与浮点表示法 2.4.1 定点表示 所谓定点表示法,是指小数点在数中的位置是固定的.原理上讲,小数点的位置固定在哪一位都是可以的, ...

  3. 原码/补码的加减运算and溢出判断

    小数点的处理: 任意一个二进制数S都可以表示为 研究小数点就要研究阶码E的取值: 若E=0,则表示纯小数--代表定点小数: 例0.1111表示+0.1111,1.1111表示-0.1111. 若E=n ...

  4. 补码的加减运算和溢出判断

    补码的加减运算 定义:两个操作数用补码表示,连同符号位一起表示,结果也用补码表示 补码的加减运算公式:(X+Y)补 = X补 + Y补                 (X-Y)补 = X补 + (- ...

  5. 【计算机组成原理】补码的加减运算方法

    补码加法 [x+y]补=[x]补+[y]补 符号位也当作数值计算,最高位产生的进位丢掉(操作就是mod2n+1 ) 补码减法 [X-Y]补 =[X]补 + [-Y]补 和补码加法几乎完全一样,唯一的不 ...

  6. 二进制补码加减运算的溢出检查

    文章目录 前言 法一(较少使用) 法二 法三(常用) 例题 前言 此文章不涉及相应的二进制补码的加减运算,仅对其溢出的问题进行讨论. 例题中有包含相应的解释,如果通过这三个方法检测都没有问题时,结果不 ...

  7. 计组之数据运算:5、加减运算与溢出判断

    5.加减运算与溢出判断 思维导图 原码的加减运算 补码的加减运算 溢出判断 1.采用一位符号位直接判断 2.采用一位符号位用进位判断 3.采用双符号位判断 符号扩展 思维导图 原码的加减运算 补码的加 ...

  8. 计算机组成原理——加减运算 溢出判断

    文章目录 原码的加减运算 原码的加法运算: 原码的减法运算,"减数"符号取反,转变为加法: 补码的加减运算 补充: 1. 求[-B]补 2. 负数补 → 原: 例题 溢出判断 溢出 ...

  9. 浮点数加减运算左规右规

    当尾数用二进制表示时,浮点规格化的定义是尾数M应满足:  1/2   ≤  |M|<1 显然对于正数而言,有M = 00.1φφ-φ:对于负数,其补码形式为11.0φφ-φ(即-0.0***** ...

最新文章

  1. Blender三维建模和动画风格化的东方场景视频教程
  2. Oracle存储过程编译卡死的解决方法
  3. ubuntu18上安裝TeamViewer
  4. 冠军杜兰特和Deta比赛
  5. petshop详解之五:PetShop之业务逻辑层设计
  6. C++ STL 总结
  7. LVS DR模式 负载均衡服务搭建
  8. 学好机器学习,这里有想要的一切
  9. docker 添加端口映射_Docker三大核心概念之容器
  10. linux 性能检测工具之 dstat
  11. 负载均衡调度算法追溯
  12. 软件测试——测试用例设计测试分类详解
  13. Mac securecrt 破解版安装
  14. 嵌入式arm(一)学ARM要掌握的预备知识(本篇文章持续更新)
  15. python ORM 模块peewee(三): Model的建立
  16. CF - 1156D - 0-1-Tree
  17. C#爬虫爬取京东自营笔记本
  18. java poi 导出excel不能超过65536行
  19. 浏览器播放rtsp视频,基于nodeJs
  20. 科学绘图经典--Grapher

热门文章

  1. Vue整合Rtmp流实现无Flash播放[hls篇]
  2. H3CSE路由-IPv6过渡技术
  3. cpu监控(cpu监控悬浮窗)
  4. 计算机考试 虚拟机,虚拟机在全国计算机等级考试机试中的应用.doc
  5. LTE从开机到RACH过程
  6. linux系统个安装360压缩,linux下的各种压缩文件安装介绍
  7. spring定时器@Scheduled的原理和实现分析
  8. 非暴力沟通--日常沟通的技巧与实践
  9. 探索ESP8285(2)搭建Windows版MQTT服务器
  10. linux 微信告警消息secret,Zabbix3.0.4微信告警配置详解