0%

2.4_算数逻辑单元(ALU)

算数逻辑单元(ALU)

视频讲解:ALU简单介绍

串行加法器和并行加法器

一位全加器

视频讲解:对于一位全加器的基本介绍

并行加法器

串行进位的并行加法器

把n个全加器串接起来,就可进行两个n位数的相加。

并行进位的并行加法器

视频讲解:并行进位的并行加法器的简单介绍

补码加/减法运算器

加法器原理

例1:A=1000,B=0111,Cin=0

则:F=1111,Cout=0

例2:A=1000,B=0111,Cin=1

则:F=0000,Cout=1

补码加减器

视频讲解:补码加减器的设计

补码加减法原理

X+Y:直接按位相加

X-Y:

  1. Y全部按位取反,末位+1

  2. 减法变加法

Sub信号的作用

  • 控制多路选择器的输出

  • 若计算减法时,1同时输入到Cin,用作补码取反后的+1

例:4bit补码,X=-8,Y=7

\(\text{X}*{补} = 1000\)\(\text{Y}*{补} = 0111\)

X+Y:直接输出:1111B(补)=-1D

X-Y:1000+(1000+1)=0001B(补)(产生溢出)

这一电路同样适用于无符号数的加减法,原理完全一致,但是判断溢出标准不同

计算机中是不会判断什么有符号无符号数,它设计出的硬件都是按0/1做运算,是人都结果做出了不同的解释

标志位

有符号数

OF:溢出标志位

  • 最高位产生的进位与次高位产生的进位异或

  • 判断有符号数的溢出对无符号数没有意义

SF:符号标志位

  • 取运算结果的最高位

例:4bit补码,X=-8,Y=7

X补=1000,Y补=0111

X+Y

直接输出:1111B(补)=-1D

OF=0 ⊕ 0=0:没有溢出

SF=1:结果是负数

X-Y

1000+(1000+1)=0001B

OF=1 ⊕ 0=1:产生了溢出

SF=0:结果是正数

无符号数

ZF:零标志位

  • 运算结果全部为零

CF:进位标志

  • 最高位的进位信号与sub进行异或

  • 为1代表发生了借位,产生溢出

  • 判断无符号数的溢出

例:4bit原码,无符号数X=3,Y=4

X=0011B,Y=0100B

X+Y

直接输出:0111B(原)=7D

ZF:0

CF:0 ⊕ 0=0

X-Y

0011+(1011+1)=1111B(原)

ZF:0

CF:0 ⊕ 1=1(产生了借位溢出)