[计算机组成原理]定点数运算及溢出检测
文章目录
- 一、定点数加法运算
- 二、定点数减法运算
- 三、数溢出的概念及其判断方法
- 1、溢出的概念
- 2、溢出的检测方法
- 四、无符号数运算的溢出判断
一、定点数加法运算
[X]补+[X]补=[X+Y]补mod2n+1[X]_补 + [X]_补 = [X + Y]_补\ mod\ 2^{n + 1}[X]补+[X]补=[X+Y]补 mod 2n+1
算法理解
例1 已知 X=+10010X = + 10010X=+10010 Y=−10101Y = - 10101Y=−10101 求 X+YX + YX+Y
解:[X]补=010010[X]_补 = 0\ 10010[X]补=0 10010 [Y]补=101011\ \ [Y]_补 = 1\ 01011 [Y]补=1 01011
[X+Y]补=[X]补+[Y]补=010010+101011=111101[X + Y]_补 = [X]_补 + [Y]_补 = 0\ 10010 + 1\ 01011 = 1\ 11101[X+Y]补=[X]补+[Y]补=0 10010+1 01011=1 11101
所以:X+Y=−00011X + Y = - 00011X+Y=−00011
二、定点数减法运算
[X−Y]补=[X]补−[Y]补=[X]补+[−Y]补[X - Y]_补 = [X]_补 - [Y]_补 = [X]_补 + [-Y]_补[X−Y]补=[X]补−[Y]补=[X]补+[−Y]补
算法理解
例2 已知 [Y]补=10011[Y]_补 = 1\ 0011[Y]补=1 0011 求 [−Y]补[-Y]_补[−Y]补
解:[Y]补=10011[Y]_补 = 1\ 0011[Y]补=1 0011
∴Y=−1101−Y=1101\therefore\ Y = - 1101 \ \ \ \ \ -Y = 1101∴ Y=−1101 −Y=1101
∴[−Y]补=01101\therefore\ [-Y]_补 = 0\ 1101∴ [−Y]补=0 1101
对比 [Y]补=10011[Y]_补 = 1\ 0011[Y]补=1 0011,可知:
通过右向扫描 [Y]补[Y]_补[Y]补,在遇到数字 1 及之前,直接输出遇到的数字,遇到 1 之后,取反输出,即可得到 [−Y]补[-Y]_补[−Y]补,反之亦然!
例3 已知 X=+10101X = + 10101X=+10101 Y=+10010Y = + 10010Y=+10010 求 X−YX - YX−Y
解:[X]补=010101[X]_补 = 0\ 10101[X]补=0 10101,[Y]补=010010[Y]_补 = 0\ 10010[Y]补=0 10010,[−Y]补=101110[-Y]_补 = 1\ 01110[−Y]补=1 01110
[X+Y]补=[X]补+[−Y]补=010101+101110=1000011[X + Y]_补 = [X]_补 + [-Y]_补 = 0\ 10101 + 1\ 01110 = 1\ 0\ 00011[X+Y]补=[X]补+[−Y]补=0 10101+1 01110=1 0 00011
所以 X−Y=+00011X - Y = +00011X−Y=+00011
三、数溢出的概念及其判断方法
1、溢出的概念
运算结果超过了某种数据类型的表示范围。
例4 已知 X=+10010X = + 10010X=+10010 Y=+10101Y = + 10101Y=+10101 求 X+YX + YX+Y
解:[X]补=010010[X]_补 = 0\ 10010[X]补=0 10010 Y=010101Y = 0\ 10101Y=0 10101
[X+Y]补=[X]补+[Y]补=010010+010101=100111[X + Y]_补 = [X]_补 + [Y]_补 = 0\ 10010 + 0\ 10101 = 1\ 00111[X+Y]补=[X]补+[Y]补=0 10010+0 10101=1 00111
所以:X+Y=−11001X + Y = -11001X+Y=−11001
两个正数之和为负数!
例5 已知 X=−10010X = - 10010X=−10010 Y=−10101Y = - 10101Y=−10101 求 X+YX + YX+Y
解:[X]补=101110[X]_补 = 1\ 01110[X]补=1 01110 [Y]补=101011[Y]_补 = 1\ 01011[Y]补=1 01011
[X+Y]补=[X]补+[Y]补=101110+101011=[X + Y]_补 = [X]_补 + [Y]_补 = 1\ 01110 + 1\ 01011 =[X+Y]补=[X]补+[Y]补=1 01110+1 01011= 111 0110010\ 110010 11001
所以:X+Y=+11001X + Y = + 11001X+Y=+11001
两个负数之和为正数!
2、溢出的检测方法
溢出只可能发生在同符号数相加时,包括 [X]补[X]_补[X]补 [Y]补[Y]_补[Y]补;[X]补[X]_补[X]补 与 [−Y][-Y][−Y] 同号;
(1)方法1:对操作数和运算结果的符号位进行检测
当结果的符号位与操作数的符号不相同时就表明发生了溢出(设 X0X_0X0 Y0Y_0Y0 为参加运算数的符号位,S0S_0S0 为结果的符号位)
V=X0Y0S0‾+X0‾Y0‾S0V = X_0\ Y_0\ \overline{S_0} + \overline{X_0}\ \overline{Y_0}\ S_0V=X0 Y0 S0+X0 Y0 S0
当 V=1V = 1V=1 时,运算结果溢出,根据该逻辑表达式,容易画出相应电路。
(2)方法2:对最高数据位进位和符号进位进行检测
设运算时最高数据位产生的进位为 C1C_1C1,符号位产生的进位为 C0C_0C0,溢出检测电路为:V=C0⨁C1V = C_0 \bigoplus C_1V=C0⨁C1
0.X1+0.Y10.X_1 + 0.Y_10.X1+0.Y1 此时:C0=0C_0 = 0C0=0,若 C1=1C_1 = 1C1=1 则改变了结果符号位,发生溢出。
1.X1+1.Y11.X_1 + 1.Y_11.X1+1.Y1 此时:C0=1C_0 = 1C0=1,若 C1=0C_1 = 0C1=0 则改变了结果符号位,发生溢出。
(3)方法3:用变型补码
[X]补=Xf1Xf2.X1X2X3…Xnmod2n+2[X]_补 = X_{f1}X_{f2}\ .\ X_1X_2X_3\ldots X_n mod \ 2^{n + 2}[X]补=Xf1Xf2 . X1X2X3…Xnmod 2n+2
溢出的判断:V=Xf1⨁Xf2V = X_{f1}\bigoplus X_{f2}V=Xf1⨁Xf2
例6 已知 X=−10010X = - 10010X=−10010 Y=−10101Y = - 10101Y=−10101 求 X+YX + YX+Y
解:[X]补=1101110[X]_补 = 11\ 01110[X]补=11 01110 [Y]补=1101011[Y]_补 = 11\ 01011[Y]补=11 01011
[X+Y]补=[X]补+[Y]补=1101110+1101011=[X + Y]_补 = [X]_补 + [Y]_补 = 11\ 01110 + 11\ 01011 =[X+Y]补=[X]补+[Y]补=11 01110+11 01011= 111 101010 110011100111001
V=1⨁0=1V = 1 \bigoplus 0 = 1V=1⨁0=1 故发生溢出!
上述三种方法可基于逻辑表达式画出相应电路,在后面的运算器部分,还将具体讲解。
(4)溢出判断的软件方法
int tadd_ok(int x, int y)
{int sum = x + y;int neg_over = x < 0 && y < 0 && sum >= 0;int pos_over = x >= 0 && y >= 0 && sum < 0;return !neg_over && !pos_over;
}
体会软/硬件功能的等效性和差异性!
体会软/硬件协同的系统观!
四、无符号数运算的溢出判断
1、无符号数加法的溢出可用 ALU 的进位表示;
2、无符号数减法的溢出也可用带加/减功能的 ALU 的进位取反后表示。
[计算机组成原理]定点数运算及溢出检测相关推荐
- 计算机组成原理x移,计算机组成原理移位运算
<计算机组成原理移位运算>由会员分享,可在线阅读,更多相关<计算机组成原理移位运算(12页珍藏版)>请在装配图网上搜索. 1.3-1 移位操作.十进制运算及逻辑运算,移位的意义 ...
- 计算机组成补码的左移,计算机组成原理 移位运算
<计算机组成原理 移位运算>由会员分享,可在线阅读,更多相关<计算机组成原理 移位运算(12页珍藏版)>请在人人文库网上搜索. 1.3-1 移位操作.十进制运算及逻辑运算,移位 ...
- 计算机原理之定点与浮点表示教案,计算机组成原理-定点数和浮点数.ppt
计算机组成原理-定点数和浮点数 3.2.3 定点数和浮点数 计算机中的两种表示方式 数值范围:一种数据类型所能表示的最大值和最小值 数据精度:实数所能表示的有效数字位数. 数值范围和数据精度均与使用多 ...
- 计算机组成原理移位图,计算机组成原理移位运算实验报告.doc
计算机组成原理移位运算实验报告.doc 计算 机组成原理实验五 移 位运算实验 姓名 陈衍席 学号1205110125 网工 1202 [实验环境][实验环境] 1. Windows 2000 或 W ...
- 计算机组成原理移位运算实验报告,计算机组成原理移位运算实验报告
计算机组成原理移位运算实验报告 (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 计算机组成原理实验五移位运算实验.......... ...
- 计算机组成原理实验移位运算,计算机组成原理移位运算实验.docx
计算机组成原理移位运算实验 实验4 移位运算实验 实验目的 1.掌握移位寄存器的工作原理及其应用. 2.熟悉移位寄存器的逻辑功能及实现各种移位功能的方法.实验设备 74LS194组件一片,单脉冲一个, ...
- 计算机组成原理——定点数加减乘除运算
通过这篇文章我们来学习一下定点数的加减乘除在计算机中是如何实现的. 定点加法 我们知道这个负数用补码去表示后,可以和正数一样去处理.在计算机中就是用一个加法器就可以实现了,没必要单独为了负数的加法运算 ...
- 计算机组成原理:运算方法和运算器
本文内容:定点运算,浮点运算,定点运算器和浮点运算器. 思维导图 在上篇文章中 计算机组成原理:数据与文字的表示方法 ,我们已经知道了数据与文字在计算机中是怎么表示的.在这一篇中,我们将知道数据是如何 ...
- 计算机组成原理移位运算实验报告,移位运算器实验报告.doc
移位运算器实验报告 移位运算器 实验报告 课程名称: 计算机组成原理 姓名/学号: 实验名称: 算术逻辑运算 专业: 软件工程 班级: 软件工程班 指导教师: 实验日期: 2011年 10月 26日 ...
- 计算机组成原理|定点数和浮点数的运算
目录 1.补码的加减法 1.1溢出判断 1.2符号拓展 1.3小结 2.原码的除法运算 2.1 手算除法 3. 浮点数的运算方法 3.1 浮点数的表示 3.2 浮点数尾数的规格化 3.2浮点数的加减运 ...
最新文章
- Android 10.0 PackageManagerService(三)APK扫描-[Android取经之路]
- 马斯克用实力赢得信任!SpaceX获NASA批准,可用“二手”火箭和飞船载人航天
- 【机器学习】什么是机器学习?(上)
- 微型计算机中负数以()存放,130.在微型计算机中,负数常用( )表示。
- golang mysql封装_自己封装的golang 操作数据库方法
- 2021泌阳高考成绩查询,驻马店教育局网站2021年泌阳中招成绩查询系统
- OO4O的session残留问题
- C++11右值引用和std::move语句实例解析
- cadvisor没有采集到容器信息解决方案
- FBreader多端同步心得补充
- 【CodeChef-LYRC】Music Lyrics【AC自动机】
- KVM之父的新作ScyllaDB:用C++开发的Cassandra兼容列数据库,性能提升10倍
- 这9个程序员岗位最牛!AI百万年薪夺冠
- java 坦克世界源代码教程_译文教程:坦克世界游戏制作技术分享
- git 修改历史信息
- py socket5 代理
- (Java)socket网络编程及处理socket粘包拆包问题
- 还有猛料?维基解密称只发布了已掌握美中情局文件的1%
- 2018医疗器械行业发展
- 夸计算机老师的成语,赞美老师的词语和句子 把诚挚的祝愿献给老师
热门文章
- oracle hot patch david,Hot Patch工具Rollout
- 4484: [Jsoi2015]最小表示 bitset+拓扑序
- 为了编程梦想,重新审视自己,开始出发。
- DevExpress之C#界面+MATLAB动态链接库联合编程
- python求真分数_Python 列出最简真分数序列*
- 如何用python来打印一个三角形
- 批处理图片尺寸修改成4的倍数
- python ip地址处理_Python学习笔记-IP地址处理模块Ipy
- [读书笔记]固定收益证券 第三版 Fixed income securities
- 苹果退款_苹果退款有什么影响吗