(计算机组成原理)第二章数据的表示和运算-第二节4:定点数的加减运算和溢出判断

快乐江湖 快乐江湖     2022-12-14     327

关键词:

一:使用原码实现加减法基本逻辑

(1)原码加法

正数+正数: 使用绝对值做加法,结果为正
负数+负数: 使用绝对值做加法,结果为负
正数+负数或负数+正数: 绝对值大的减去绝对值小的,符号同绝对值大的数

  • 注意正数+正数、负数+负数这两种情况结果可能会溢出

(2)原码减法

根据之前的描述我们可以知道,减法可以用等价的加法来实现,所以减数符号取反转变为加法
正数-负数: 正数+正数
负数-正数: 负数+负数
正数-正数: 正数+负数
负数+正数: 负数-负数

二:使用补码实现加减法

可以看出使用原码完成加减运算实在是有点难为计算机了,而且实现逻辑极其复杂。所以在计算机中是使用补码完成加减法运算的

设机器字长为8位, A = 15 A=15 A=15 B = − 24 B=-24 B=24,求 [ A + B ] 补 [A+B]_补 [A+B] [ A − B ] 补 [A-B]_补 [AB]


运算时莫管符号位,直接相加就可以了: [ A + B ] 补 = [ A ] 补 + [ B ] 补 = 0 , 0001111 + 1 , 1110111 = 1 , 1110111 [A+B]_补=[A]_补+[B]_补=0,0001111+1,1110111=1,1110111 [A+B]=[A]+[B]=0,0001111+1,1110111=1,1110111,转为原码为 1 , 0001001 1,0001001 1,0001001,真值为 − 9 -9 9

[ A − B ] 补 [A-B]_补 [AB]= [ A ] 补 + [ − B ] 补 = 0 , 0001111 + 0 , 0011000 = 0 , 0100111 [A]_补+[-B]_补=0,0001111+0,0011000=0,0100111 [A]+[B]=0,0001111+0,0011000=0,0100111,转换为原码为 0 , 0100111 0,0100111 0,0100111,真值为+39

  • 小技巧: [ − B ] 补 = [ B ] 补 全 部 位 ( 包 括 符 号 位 ) 取 反 后 + 1 [-B]_补=[B]_补全部位(包括符号位)取反后+1 [B]=[B]+1

因此对于补码来说,无论加法还是减法,最后都会转换为加法,由加法器实现运算,符号一同参与运算

三:溢出判断

在上面的例子中加入 C = 124 C=124 C=124,请你求 [ A + C ] 补 [A+C]_补 [A+C] [ B − C ] 补 [B-C]_补 [BC]
相信运算过后你会得到一个奇怪的结果

这是因为如果机器字长8位,那么它表示的范围就是 − 128 − 127 -128-127 128127,所以上面的例子发生了溢出的现象

溢出分为上溢和下溢

  • 正数+正数导致上溢:正+正=负
  • 负数+负数导致下溢:负+负=正

(1)采用一位符号位依据溢出表达式判断

依照上面溢出的例子有
[ A + C ] 补 = 0 , 0001111 + 0 , 1111100 = 1 , 0001011 [A+C]_补=0,0001111+0,1111100=1,0001011 [A+C]=0,0001111+0,1111100=1,0001011,真值-117
[ B − C ] 补 = 1 , 1101000 + 1 , 0000100 = 0 , 1101100 [B-C]_补=1,1101000+1,0000100=0,1101100 [BC]=1,1101000+1,0000100=0,1101100,真值+108

假设A的符号位为 A s A_s As,B的符号位为 B S B_S BS,其运算结果符号位 S s S_s Ss,则溢出逻辑表达式为
V = ( A s B s ( ¬ S s ) ) + ( ( ¬ A s ) ( ¬ B s ) S s ) V=(A_sB_s(\\neg S_s ))+ ((\\neg A_s)( \\neg B_s)S_s) V=(AsBs(¬Ss))+((¬As)(¬Bs)Ss)

V = 0 V=0 V=0表示无溢出; V = 1 V=1 V=1表示有溢出

  • A B C ABC ABC表示与运算,A与B与C,当A、B、C全部为1时结果为1,有一个为0结果为0
  • A + B + C A+B+C A+B+C表示或运算,A或B或C,当A、B、C全部为0时结果为0,有一个为1结果为1
  • ¬ A \\neg A ¬A表示非运算,比如 A A A为1则 ¬ A \\neg A ¬A为0

因此在上面的例子中 [ A ] 补 [A]_补 [A]符号位为0 [ C ] 补 [C]_补 [C]符号位为0,, ¬ [ A + C ] 补 \\neg [A+C]_补 ¬[A+C]结果为0,逻辑运算结果为0;又 ¬ [ A ] 补 \\neg [A]_补 ¬[A]1 ¬ [ C ] 补 \\neg [C]_补 ¬[C]1,, [ A + C ] 补 [A+C]_补 [A+C]符号位为1

也就是$V= 000 + 111 = 0 + 1 = 1 000 + 111=0+1=1 000+111=0+1=1于是有溢出,其实这也对应了正数+正数必由溢出的结论$ 。 同时负数+负数,也就是 [ B − C ] 补 [B-C]_补 [BC]读者可以根据上面的逻辑自行验证,会发现也是溢出的。

于是通过这种方法我们就把电路的思想通过数学表达式表现了除了,计算机在判断溢出时可根据此逻辑进行判断

(2)采用一位符号位依据进位情况判断

这里有两个进位需要区别开来

  • 符号位的进位 C s C_s Cs:最高数值位向符号位进的位
  • 最高数值位的进位 C 1 C_1 C1:最高数值位得到的进位

如果

(计算机组成原理)第二章数据的表示和运算-第二节3:定点数的移位运算(算数移位逻辑移位和循环移位)

文章目录一:算数运算(1)原码的算数移位(2)反码的算术移位(3)补码的算数移位二:逻辑移位三:循环移位定点数的移位运算根据操作对象的不同划分为算数移位和逻辑移位。有符号数的... 查看详情

(计算机组成原理)第二章数据的表示和运算-第二节1:定点数的表示(原码反码补码和移码)(代码片段)

文章目录一:机器数的定点表示二:无符号数和有符号数的表示(1)无符号数(2)有符号数三:原码、补码、反码和移码(1)原码A:定点整数的原码表示B:定点小数的原码表示(2... 查看详情

(计算机组成原理)第二章数据的表示和运算-第二节5:定点数乘法运算(原码/补码一位乘法)(代码片段)

文章目录一:乘法运算基本思想二:原码一位乘法(1)实现原理(2)手算模拟三:补码一位乘法(BoothBoothBooth算法,考察重点)一:乘法运算基本思想关于定点数的乘法,其实我们... 查看详情

(计算机组成原理)第二章数据的表示和运算-第二节6:定点数除法运算(原码/补码一位除法)(代码片段)

文章目录一:除法运算基本思想二:原码一位除法:恢复余数法(1)实现原理(2)手算模拟三:原码一位除法:加减交替法(不恢复余数法)四:补码一位除法五:总结一:... 查看详情

(计算机组成原理)第二章数据的表示和运算-第二节2:原码反码补码和移码的作用(代码片段)

...:原码直接运算的弊端前面我们刚说了各种码,计算机中的各种数是要经过大量运算的,如果在这里我们不管别的,直接按照习惯采用原码对应二进制位相加的话,如果是无符号数那么结果正确,比如下面... 查看详情

(计算机组成原理)第二章数据的表示和运算-第二节7:详解c语言中的强制类型转换(代码片段)

...学习完前面几节的内容后,相信大家对数据是如何在计算机中存储、运算的有了更加深入的认识,那么接下来我们就以更深层次的角度来看看我们熟悉的C语言中的强制类型转换(1)无符号数和有符号数有 查看详情

(计算机组成原理)第二章数据的表示和运算-第一节4:校验码

文章目录一:预备概念(1)校验码的概念(2)码字和码距二:常见校验码(1)奇偶校验码(2)海明校验码A:纠错理论B:求解海明码C:补充-全校验位(3)循环冗余校验... 查看详情

(计算机组成原理)第二章数据的表示和运算-第一节:bcd码

文章目录一:什么是BCD码二:常用的BCD码(1)8421码(最常用)(2)余3码(3)2421码一:什么是BCD码BCD(Binary-CodedDecimal)是指二进制编码的十进制数。我们可以用4位二进制数来表示一位十... 查看详情

(计算机组成原理)第二章数据的表示和运算-第一节5:本章习题

文章目录1.下列各种数制中,最小的数是2.7E5H+4D3H等于多少3.若十进制数为137.5,则八进制数为 查看详情

(计算机组成原理)第二章数据的表示和运算-第三节1:浮点数的表示(代码片段)

文章目录一:浮点数的表示格式二:浮点数尾数的规格化(1)左规和右规(2)规格化浮点数的特点三:浮点数表示范围(408考试大纲已删除)浮点表示法是指以适当的方式将比例因子表示在数... 查看详情

(计算机组成原理)第二章数据的表示和运算-第三节3:浮点数加减运算

文章目录一:以十进制下的科学计数法的加减运算为例说明浮点数加减运算二:浮点数的加减运算(不舍入)三:浮点数的加减运算(舍入)四:浮点数强制类型转换一:以十进制下的科学计数... 查看详情

(计算机组成原理)第二章数据的表示和运算-第三节2:ieee754标准(代码片段)

文章目录一:移码(1)移码回顾(2)偏置值二:IEEE754标准(1)IEEE754标准格式(2)转换方法(3)表示范围一:移码(1)移码回顾本节内容涉及移码,有关移码的基... 查看详情

(计算机组成原理)第四章指令系统-第二节4:cisc和risc简单了解

文章目录一:复杂指令系统计算机(CISC)二:精简指令系统计算机(RISC)三:CISC和RISC比较指令系统的设计如今朝着两个截然不同的方向发展:一是增强原有指令的功能,设置为更复杂的新指令实现软件功能的硬化,这类机器... 查看详情

(计算机组成原理)第六章总线-第二节:总线仲裁

文章目录一:总线仲裁基本概念(1)主设备和从设备(2)总线仲裁的定义(3)为什么要进行总线仲裁(4)总线仲裁分类二:集中仲裁(1)链式查询方式(2)计数器查询方式三:独立请求方式一:总线仲裁基本概念(1)主设... 查看详情

(计算机组成原理)第四章指令系统-第二节2:数据寻址(直接寻址间接寻址立即数)

文章目录一:指令寻址和数据寻址二:数据寻址(1)直接寻址(2)间接寻址(3)寄存器寻址(4)寄存器间接寻址(5)隐含寻址(6)立即寻址一:指令寻址和数据寻址上一节我们讲到了指令寻址:下一条欲执行指令的地址会由... 查看详情

(计算机组成原理)第二章数据的表示和运算-第一节:字符与字符串在计算机中的表示详解

...与ASCII编码二:汉字的表示和编码三:字符串由于计算机内部职能识别和处理二进制代码,所以字符都必须按照一定的规则用一组二进制编码来表示一:字符编码与ASCII编码目前,国际上普遍采用的字符系统是7... 查看详情

数据的表示与运算

本笔记结合《2023王道计算机组成原理考研复习指导》食用🔥王道考研计算机组成原理第二章数据的表示与运算本笔记结合《2023王道计算机组成原理考研复习指导》食用🔥1、进位计数制1.1、十进制计数法1.2、r进制计数... 查看详情

(计算机组成原理)第四章指令系统-第二节3:数据寻址之偏移寻址(基址寻址变址寻址和相对寻址)

...址(1)基本概念(2)相对寻址作用本小节承接上一节:(计算机组成原理)第四章指令系统-第二节2:数据寻址(直接寻址、间接寻址、立即数),主要介绍以下三种数据寻址方式,它们可以归为一类,都是将形式地址视为“偏移... 查看详情