使用全加器实现补码的加减运算
引言:
我们都知道,在计算机中的加减运算都是由补码来实现的,那么,计算机是如何运用电路来实现补码的加减的呢?在计算机中,所有的加减运算其实都变成了加法后来参与运算的,那么仅需要一个加法器就可以实现了。请看下面内容。
(一)全加器的构成
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—
使用全加器实现补码的加减运算相关推荐
- 考前自学系列·计算机组成原理·补码定点加减运算和溢出判断,浮点数的加减运算,原码的乘法
补码定点加减运算和溢出判断 浮点数的加减运算 原码乘法
- 微型计算机原理计算两数和,微型计算机原理及汇编语言 第2章-2 补码及加减运算.ppt...
微型计算机原理及汇编语言 第2章-2 补码及加减运算 2.4 数的定点与浮点表示法 2.4.1 定点表示 所谓定点表示法,是指小数点在数中的位置是固定的.原理上讲,小数点的位置固定在哪一位都是可以的, ...
- 原码/补码的加减运算and溢出判断
小数点的处理: 任意一个二进制数S都可以表示为 研究小数点就要研究阶码E的取值: 若E=0,则表示纯小数--代表定点小数: 例0.1111表示+0.1111,1.1111表示-0.1111. 若E=n ...
- 补码的加减运算和溢出判断
补码的加减运算 定义:两个操作数用补码表示,连同符号位一起表示,结果也用补码表示 补码的加减运算公式:(X+Y)补 = X补 + Y补 (X-Y)补 = X补 + (- ...
- 【计算机组成原理】补码的加减运算方法
补码加法 [x+y]补=[x]补+[y]补 符号位也当作数值计算,最高位产生的进位丢掉(操作就是mod2n+1 ) 补码减法 [X-Y]补 =[X]补 + [-Y]补 和补码加法几乎完全一样,唯一的不 ...
- 二进制补码加减运算的溢出检查
文章目录 前言 法一(较少使用) 法二 法三(常用) 例题 前言 此文章不涉及相应的二进制补码的加减运算,仅对其溢出的问题进行讨论. 例题中有包含相应的解释,如果通过这三个方法检测都没有问题时,结果不 ...
- 计组之数据运算:5、加减运算与溢出判断
5.加减运算与溢出判断 思维导图 原码的加减运算 补码的加减运算 溢出判断 1.采用一位符号位直接判断 2.采用一位符号位用进位判断 3.采用双符号位判断 符号扩展 思维导图 原码的加减运算 补码的加 ...
- 计算机组成原理——加减运算 溢出判断
文章目录 原码的加减运算 原码的加法运算: 原码的减法运算,"减数"符号取反,转变为加法: 补码的加减运算 补充: 1. 求[-B]补 2. 负数补 → 原: 例题 溢出判断 溢出 ...
- 浮点数加减运算左规右规
当尾数用二进制表示时,浮点规格化的定义是尾数M应满足: 1/2 ≤ |M|<1 显然对于正数而言,有M = 00.1φφ-φ:对于负数,其补码形式为11.0φφ-φ(即-0.0***** ...
最新文章
- Blender三维建模和动画风格化的东方场景视频教程
- Oracle存储过程编译卡死的解决方法
- ubuntu18上安裝TeamViewer
- 冠军杜兰特和Deta比赛
- petshop详解之五:PetShop之业务逻辑层设计
- C++ STL 总结
- LVS DR模式 负载均衡服务搭建
- 学好机器学习,这里有想要的一切
- docker 添加端口映射_Docker三大核心概念之容器
- linux 性能检测工具之 dstat
- 负载均衡调度算法追溯
- 软件测试——测试用例设计测试分类详解
- Mac securecrt 破解版安装
- 嵌入式arm(一)学ARM要掌握的预备知识(本篇文章持续更新)
- python ORM 模块peewee(三): Model的建立
- CF - 1156D - 0-1-Tree
- C#爬虫爬取京东自营笔记本
- java poi 导出excel不能超过65536行
- 浏览器播放rtsp视频,基于nodeJs
- 科学绘图经典--Grapher
热门文章
- Vue整合Rtmp流实现无Flash播放[hls篇]
- H3CSE路由-IPv6过渡技术
- cpu监控(cpu监控悬浮窗)
- 计算机考试 虚拟机,虚拟机在全国计算机等级考试机试中的应用.doc
- LTE从开机到RACH过程
- linux系统个安装360压缩,linux下的各种压缩文件安装介绍
- spring定时器@Scheduled的原理和实现分析
- 非暴力沟通--日常沟通的技巧与实践
- 探索ESP8285(2)搭建Windows版MQTT服务器
- linux 微信告警消息secret,Zabbix3.0.4微信告警配置详解