计组|定点数移位运算+定点数、无符号数加减运算+溢出判断+运算电路

前置总述

1.计算机硬件实际运算几乎不用原码、反码,有符号数统一使用补码完成加减;反码仅作为原码↔补码转换中间产物。

2.所有减法均可等价转换为加法,硬件只需一套加法器,无需单独减法器。

3.运算会出现溢出:同号有符号数相加才溢出;无符号数加减依靠最高进位判断溢出。

4.无符号数底层运算逻辑和补码完全一致,共用同一套加法器电路。

第一部分 定点数移位运算

一、十进制移位类比

左移 R 位 = ×10^R;右移 R 位 = ÷10^R

二进制同理:左移 R 位 = ×2^R;右移 R 位 = ÷2^R

二、逻辑移位(无符号整数专用)

1.逻辑左移

高位丢弃,低位补 0;移出位为 1 会发生溢出,数值出错

2.逻辑右移

低位丢弃,高位补 0;丢弃位为 1 会丢失小数精度

三、算术移位(有符号补码专用,最高位为符号位)

1.算术左移

高位丢弃,低位补 0;符号位改变 = 溢出

2.算术右移

低位丢弃,高位补符号位(正数补 0,负数补 1);丢弃 1 丢失精度

第二部分 原码加减运算(仅理论,硬件不采用)

一、原码加法四种情况(核心:分开符号、只对绝对值运算)

设两数真值为 X、Y,原码仅数值位存绝对值,符号位单独处理

1.X 正、Y 正

绝对值相加,结果符号为正。

2.X 负、Y 负

绝对值相加,结果符号为负。

3.X 正、Y 负 / X 负、Y 正(异号)

用绝对值大的数 - 绝对值小的数;结果符号和绝对值更大的数保持一致。

二、原码减法规则

X - Y = X + (-Y)

只需将减数 Y 的符号位取反,直接套用上面原码加法逻辑。

三、原码运算缺陷

1.四种符号组合需要多路判断逻辑,硬件电路极其复杂;

2.仅同号相加会产生溢出,异号相加永远不会溢出;

3.存在 + 0、-0 两种编码,浪费存储空间。

因此计算机不使用原码做加减,统一采用补码。

第三部分 补码加减运算(硬件标准实现,重中之重)

一、补码加法:A 补 + B 补 = A+B

核心特点:符号位和数值位一同参与运算,无需单独处理符号

示例:8 位机器字长,A=15,B=-24

1.写出 A、B 真值,转为 8 位原码;

2.原码求补码:正数补码 = 原码;负数原码数值位取反 + 1;

3.两个补码全部位直接相加,包含符号位;

4.相加结果为 A+B 补,再转回原码得到最终真值。

二、补码减法:A - B = A + (-B)

关键操作:由 B 补求 -B 补(求补运算)

两种等价方法:

1.全部二进制位(符号位 + 数值位)按位取反,末位 + 1;

2.快速法:从右往左找到第一个 1,该 1 右侧所有位不变,左侧全部位取反。

三、补码转换速记

负数补码转原码,规则和原码转补码完全相同:取反加 1。

四、溢出基础概念

8 位补码表示范围:-128 ~ +127

1.上溢:两个正数相加,结果超出正数最大值(>127),运算结果符号变为负数;

2.下溢:两个负数相加,结果小于最小值(<-128),运算结果符号变为正数;

3.核心规律:只有同号数相加才会溢出;一正一负相加绝对无溢出。

第四部分 补码加法三种硬件溢出判断方法

一、方法 1:单符号位,符号逻辑判断(逻辑表达式)

设 As:被加数符号,Bs:加数符号,Ss:结果符号

(-As表示As的非)

溢出条件 V = -As-BsSs+AsBs-Ss

•-As-BsSs:两个正数 (0+0),结果符号为 1(负数)→上溢

•AsBs-Ss:两个负数 (1+1),结果符号为 0(正数)→下溢

V=1 代表溢出,V=0 无溢出;表达式可直接用与门、或门、非门搭建电路。

二、方法 2:单符号位,进位异或判断(最常用)

定义:

CP:最高数值位向符号位产生的进位

CS:符号位向更高位产生的进位

溢出判断:V = CP ⊕ CS

1.CP=1,CS=0 → 上溢(正数相加溢出)

2.CP=0,CS=1 → 下溢(负数相加溢出)

3.CP、CS 相同(同为 0 / 同为 1)→ 无溢出

三、方法 3:双符号位补码(模 4 补码)

1.表示规则:正数符号 00,负数符号 11;运算时两位符号位全部参与计算。

2.判断规则:运算后两个符号位异或,结果为 1 则溢出

○结果符号 01:上溢(本该正,实际算出负)

○结果符号 10:下溢(本该负,实际算出正)

○结果符号 00/11:无溢出

3.补充概念

○单符号位补码:模 2 补码;双符号位:模 4 补码

○硬件存储仅存 1 位符号位,运算前复制一份符号位,不增加存储开销。

第五部分 无符号数加减运算

一、底层运算逻辑(和补码完全一致,共用加法器)

(1)无符号加法

两数所有二进制位直接逐位相加,低位向高位进位正常传递。

(2)无符号减法:A - B = A + B 的补数

N 位无符号数天然模2^N(8 位模 256)

求 B 的补数操作:B 全部位按位取反,末位 + 1

减法转换为加法,统一由加法器完成。

二、无符号数溢出判断

手算做题法(考试首选)

N 位无符号数范围:0∼(2^N)−1

1.加法:十进制求和 > (2^N)−1 → 溢出

2.减法:十进制结果 < 0 → 溢出

硬件电路判断(依靠最高进位 Cout)

1.无符号加法:最高位产生进位 Cout=1 → 溢出;Cout=0 正常

2.无符号减法(已转加法):最高位进位 Cout=0 → 溢出;Cout=1 正常

第六部分 补码加减运算硬件电路(带 SUB 控制信号加法器)

一、电路组成

N 位并行加法器、多路选择器、一组非门、控制信号 SUB

•SUB=0:执行加法;SUB=1:执行减法

二、加法流程(SUB=0)

1.多路选择器直接输出原加数 Y;

2.加法器最低位进位 Cin=0;

3.输入 A、Y 逐位相加,输出和,产生最高进位 Cout。

三、减法流程(SUB=1)

1.Y 经过非门全部按位取反;

2.多路选择器输出取反后的 Y;

3.加法器最低位进位 Cin=1(实现末位 + 1,完成求补);

4.等价完成 A + -Y 补,实现减法。

四、拓展:电路同时支持无符号数运算

无符号数加减底层运算规则和补码完全相同,该加法器一套电路通用。

第七部分 运算标志位(OF/SF/ZF/CF)必考

一、OF 溢出标志(有符号数专用)

生成逻辑:最高数值位进位 CP ⊕ 符号位进位 CS

OF=1:有符号加减溢出;OF=0:无溢出

二、SF 符号标志(有符号数专用)

直接取运算结果最高位(符号位)

SF=1:结果为负数;SF=0:结果为正数

三、ZF 零标志

所有运算结果位做或非运算

ZF=1:运算结果全 0;ZF=0:结果非 0

四、CF 进位 / 借位标志(无符号数专用)

生成逻辑:Cout(最高进位)⊕ Cin(最低进位)

•加法 Cin=0:CF=1 代表 Cout=1,无符号加法溢出

•减法 Cin=1:CF=1 代表 Cout=0,无符号减法溢出

CF=1:无符号运算溢出;CF=0:无溢出

第八部分 复习速记总结

1.逻辑左 / 算术左:规则完全一致,高丢低补 0

2.逻辑右:高位统一补 0;算术右:高位补符号

3.左移等价乘 2、右移等价 2;左移防溢出,右防精度丢失

4.有符号运算只用补码,减法 = 加负数补码;符号位参与运算。

5.溢出区分:有符号看 OF;无符号看 CF;同号相加才会有符号溢出。

6.三种溢出判断:符号逻辑、进位异或、双符号位。

7.无符号数模2N,减法靠补数转换加法,电路和补码加法器通用。

8.四大标志位:OF 判有符号溢出、SF 判正负、ZF 判零、CF 判无符号溢出。

9.加减硬件靠 SUB 控制信号实现,SUB=0 加、SUB=1 减,取反 + 最低进位 1 完成求补。

相关推荐
A.零点1 天前
【期末复习,408 考研计组全程笔记 】— 第4章 :指令系统
笔记·考研·408·计算机组成原理
mifengxing1 天前
计算机组成原理概述
笔记·考研·计算机组成原理·复习笔记
m0_547486661 天前
《计算机组成原理教程》全套PPT课件
计算机·计算机组成原理
鱼7333 天前
数据的表示--进位计数制与转换
计算机组成原理
鱼7336 天前
计算机的性能指标(2)--运算速度指标
计算机组成原理
Justice Young6 天前
计算机组成原理【期末冲刺版】
计算机组成原理
凡亿电子笔记7 天前
模拟电路和数字电路有什么区别?新手入门先学哪个
数字电路·模拟电路
八解毒剂9 天前
编码和校验码
计算机组成原理
八解毒剂11 天前
计算机层次结构
计算机组成原理