计算机基础4

142 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第27天,点击查看活动详情

算术逻辑部件(ALU)

进行基本算术运算与逻辑运算

  • 无符号整数加,减
  • 带符号整数加,减
  • 与、或、非、异或等逻辑运算

核心电路是带标志加法器

输出除和/差等,还有标志信息

有一个操作控制端( ALUop ) ,用来决定ALU所执行的处理功能。ALUop的位数k决定了操作的种类,例如,当位数k为3时,ALU最多只有23=8种操作。

image.png

第二讲 从c表达式到逻辑电路

先从c表达式到运算类指令

对于y=(x>>2)+k

  1. 先转换为指令序列,通过执行运算类指令来实现,下图为指令序列

image.png 2. 计算机直接执行指令来完成运算

控制器对指令进行译码,产生控制信号送运算电路

  1. 操作数在运算电路中运算

image.png 移位器和整数加减运算器都是由逻辑门电路构成的!

数据的运算

image.png

第三讲 C语言中的各类运算

-81的机器数为10101111

分析:-81=-1010001B,为负号,即在前面加上1.其余1->0,0->1,最后一位加上1就变为10101111

image.png short si= -32768;

unsigned short usi = si;

int i = si;

unsingned ui = usi ;

unsingned的意思是无符号整数

在大端机上输出si, usi, i, ui的十进制和十六进制值是什么?

分析一把:

十进制 十六进制

si -32768 8000

usi 32768 8000

i -32768 FFFF 8000

ui 32768 0000 8000

首先,short不用符号表示。那么si的十六进制直接为8000。因此转为无符号整数也为8000.但是int有符号表示,因此i的十六进制为FFFF 8000,其中FFFF表示为符号。ui为无符号整数,所以前面四位为0。

image.png

第四讲 整数加减运算

无符号整数

  • 指针,地址

带符号整数

无符号整数和带符号整数的加、减运算电路完全一样,这个运算电路称为整数加减运算部件,基于带标志加法器实现

计算机中的加法器,因为只有n位,所以是一种模2n运算系统!

重要认识

  1. 计算机中所有运算都基于加法器实现
  2. 加法器不知道所运算的是带符号数还是无符号数。
  3. 加法器不判定对错,总是取低n位作为结果,并生成标志信息。

条件标志位

A+(-)B+(-)Cin +-有sub决定。输出 Sum 和Cout

OF:若A与B’同号但与Sum不同号,则1;否则0。

SF : sum符号

ZF:如Sum为0,则1,否则0。

CF : Cout 亦或sub

整数加法举例

做加法时,主要判断是否溢出

无符号加溢出条件:CF=1

带符号加溢出条件:OF=1,即两个相同符号的相加,结果与他们不同号,则溢出

例子:n=8,107+46=image-20220628092309782

整数减法举例

带符号:-7-6=?

对于7的二进制为0111的补码为1001,

对于6的二进制为0110的补码为1010

因此结果为0011=3,结果为正数,因此溢出

带符号溢出

(1)最高位和次高位的进位不同

(2)和的符号位和加数的符号位不同

无符号:-3-5=-8;13-5=8

image.png

无符号减溢出∶差为负数,即借位CF=1

做减法以比较大小,规则:

Unsigned: CF=0时,大于

Signed : OF=SF时,大于

image.png

image.png