我是靠谱客的博主 开放发夹,最近开发中收集的这篇文章主要介绍加减运算&溢出判断(计算机组成原理16)加减运算&溢出判断前言1 原码的加减运算2 补码的加减运算3 小结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

加减运算&溢出判断

视频链接地址:
https://www.bilibili.com/video/BV1BE411D7ii?from=search&seid=6420326887479343502

计算机组成原理 系列文章目录

  • 加减运算&溢出判断
  • 前言
  • 1 原码的加减运算
  • 2 补码的加减运算
    • 2.1 补码加减
    • 2.2 溢出判断
    • 2.3 符号扩展
  • 3 小结

前言

在本篇中,你将掌握

  • 原码、补码的加减法运算
  • 加法运算的三种溢出判断
  • 符号扩展的实现

在这里插入图片描述

1 原码的加减运算

在这里插入图片描述
注意看上图,14+(-14)的原码加法是错误的

原码的加法运算:
  正+正 = 绝对值做加法,结果为正
  负+负 = 绝对值做加法,结果为负
  正+负 = 绝对值大的减绝对值小的,符号位同绝对值大的数

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

可以看出,原码的加法逻辑太难了,所以计算机中通常用补码来实现加减运算

2 补码的加减运算

2.1 补码加减

[ A − B ] 补 = [ A ] 补 + [ − B ] 补 [A-B]_{补} = [A]_{补} + [-B]_{补} [AB]=[A]+[B]
对于补码来说,无论加法还是减法,最后都会转变成加法,由加法器实现运算,符号位也参与运算。

且对于8位机器字长的补码运算会出现溢出,(-128至127)

2.2 溢出判断

在这里插入图片描述
在补码加法运算中,会出现溢出这种问题,可以将溢出理解为“循环补码”
  比如三位机器数的加法,3+3 = 011 + 011 = 110 = -2

因此,我们可以得到这样的规律:
  只有“正数+正数”才会上溢——正+正=负
  只有“负数+负数”才会下溢——负+负=正

在此,计算机判断溢出的方式有三种:

  1. 方法一:采用一位符号位,离散数学方式进行逻辑表达式计算,而在硬件实现上也只需与门、或门、非门就可以实现逻辑表达式的计算
    在这里插入图片描述
  2. 方法二:采用一位符号位,根据数据位进位情况判断溢出
    在这里插入图片描述
  3. 方法三:采用双符号位,正数的符号位为00,负数的符号位为11
    在相加得到结果后,如符号位变成01则表示正确的符号位为0,实际的符号位为1,发生了上溢

注意:实际存储时只存储1个符号位,运算时会复制一个符号位
在这里插入图片描述
双符号位补码又称:模4补码
单符号位补码又称:模2补码

2.3 符号扩展

避免溢出可以使用符号扩展的方法:将短数据扩展为长数据
在这里插入图片描述

3 小结

在这里插入图片描述
本篇重点:
(1)原码、补码的加减法运算
(2)溢出判断的三种方法,其中第三种:双符号位方法中注意理解模4补码、模2补码的概念
(3)符号扩展的实现,注意负整数反码、补码的补位添1,负小数补码添0、反码添1

最后

以上就是开放发夹为你收集整理的加减运算&溢出判断(计算机组成原理16)加减运算&溢出判断前言1 原码的加减运算2 补码的加减运算3 小结的全部内容,希望文章能够帮你解决加减运算&溢出判断(计算机组成原理16)加减运算&溢出判断前言1 原码的加减运算2 补码的加减运算3 小结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部