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

Posted 流楚丶格念

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机组成原理——加减运算 & 溢出判断相关的知识,希望对你有一定的参考价值。

原码的加减运算

原码的加法运算:

  1. 正+正 → 绝对值做加法,结果为正 (可能会溢出)
  2. 负+负 → 绝对值做加法,结果为负 (可能会溢出)
  3. 正+负 → 绝对值大的减绝对值小的,符号同绝对值大的数
  4. 负+正 → 绝对值大的减绝对值小的,符号同绝对值大的数

原码的减法运算,“减数”符号取反,转变为加法:

  • 正-负 → 正+正
  • 负-正 → 负+负
  • 正-正 → 正+负
  • 负+正 → 负-负

补码的加减运算

对于补码来说,无论加法还是减法,最后都会转变成加法,由加法器实现运算,符号位也参与运算。

补充:

1. 求[-B]补

[-B]补 : [B]补连同符号位一起取反加1

2. 负数补 → 原:

①数值位取反+1;
②负数补码中,最右边的1及其右边同原码。最右边的1的左边同反码

例题

我们先看一道例题:设机器字长为8位(含1位符号位),A = 15,B = -24,求[A+B]补和[A−B]补

先将A B的原码补码都求出来
在这里插入图片描述

[A+B]补 = [A]补 + [B]补 = 0,0001111 + 1,1101000 = 1,1110111
原码:1,0001001 真值-9

[A-B]补 = [A]补 + [-B]补 = 0,0001111 + 0,0011000 = 0,0100111
真值+39

我们将题改一下:
其中 C = 124,求[A+C]补和[B−C]补,按照上面方法求出可得:
[A+C]补 = 0,0001111 + 0,1111100 = 1,0001011 真值-117 溢出(实际应该是139,但是溢出后是 -117)
[B−C]补 = 1,1101000 + 1,0000100 =0,1101100 真值+108

溢出判断

溢出条件

  • 只有“正数+正数 ”才会上溢 —— 正+正=负
  • 只有“负数+负数 ”才会下溢 —— 负+负=正

溢出判断:采用双符号位

正数符号为00,负数符号为11
[A+C]补 = 00,0001111 + 00,1111100 = 01,0001011 上溢
[B−C]补 = 11,1101000 + 11,0000100 = 10,1101100 下溢

记两个符号位为S1 S2 ,则V=S1异或S2

  • 若V=0,表示无溢出;
  • 若V=1,表示有溢出。

以上是关于计算机组成原理——加减运算 & 溢出判断的主要内容,如果未能解决你的问题,请参考以下文章

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

408计算机组成原理—加减运算和溢出判断

408计算机组成原理—加减运算和溢出判断

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

计算机组成原理 王道考研2021 第二章:数据的表示和运算 -- 定点数的运算(移位加减运算溢出判断符号扩展)

计算机组成原理——浮点数加减运算&强制类型转换