第二章 布尔运算和ALU
来源:互联网 发布:网络销售总监岗位职责 编辑:程序博客网 时间:2024/03/29 16:37
计算机内部存储都是用二进制,存储的数字叫机器数,它所表示的这个数的真正的数值叫做真值,然后采用二进制进行加减运算的,
- 二进制:二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”.
- 原码:原码就是符号位加上真值的绝对值, 即用第一位表示符号(0为负,1为正), 其余位表示值. 比如如果是8位二进制 +1 = 0000 0001 -1 = 1000 0001
- 反码:正数和原码相同,负数的反码是对其原码逐位取反,但符号位不变.
- 补码:正数的补码就是其本身,负数的补码就是符号位不变,其余尾全部取反然后加一.
在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理.
- 半加器:可以输入两个加数,然后输出本位的值和一个进位的值
- 全加器:可以处理两个输入的加数和来自低位的一个进位,然后输出一个本位结果和一个进位
- 加法器:可以作n(16,32,64…)位的加法,由半加器和全加器组成
- 算数逻辑单元(ALU):能实现多组算术运算和逻辑运算的组合逻辑电路,具体为:
整数算术运算(加、减,有时还包括乘和除,不过成本较高)
位逻辑运算(与、或、非、异或)
移位运算(将一个字向左或向右移位或浮动特定位,而无符号延伸)
通过这些运算来实现一些固定函数的输出.
全加器和半加器都是可以用简单的逻辑门实现,加法器,理论上可以用一个半加器和足够的全加器来链接起来实现.
算数逻辑单元(ALU),通过控制位来指示ALU来执行某一个基本操作,然后各种组合就可以实现多种有用的函数,
比如要进行计算X-1(X,Y为输入),X首先不动,让y先置零,然后按位取反,(00…0)->(11…1),正好是-1的补码,然后在让这两个数进行加法操作,然后对输出不做操作,就得到了X-1.
这就是书中ALU的功能和6个控制位在不同组合时可以实现的功能函数表:
对于其中的基础操作,也是可以由简单的逻辑门实现,比如取反,置1置0,等等通过一个J-K触发器就可以实现,有兴趣的可以看一看有关于数字电路的书,虽然我们现在的ALU不能实现乘法,除法,浮点计算,还有一些数学函数,但是我们可以在软件层面(操作系统)把这些复杂的计算化简成为简单的加减法和逻辑运算,因为要实现这些复杂的操作在硬件层面花费的代价比较大,性价比不高,所以我们在软件去拓展功能.
阅读全文
0 0
- 第二章 布尔运算和ALU
- 第二章 布尔运算(Boolean Arithmetic)
- 计算机系统要素:第二章 布尔运算
- 《计算机系统要素》学习笔记:第二章布尔运算
- 布尔运算和应用掩码运算
- 布尔运算
- 布尔运算
- 布尔运算
- 第二章 运算和数据类型
- Awk关系运算符和布尔运算符
- 第二章 类型,运算符和表达式
- 第二章,数据类型和运算符
- 第二章 运算方法和运算器
- 第二章 变量,数据类型和运算符
- 第二章 变量、数据类型和运算符
- 第二章 数据类型和运算符
- SQL循序渐进(14)组合条件和布尔运算符
- 布尔运算求两数和(GO 语言实现)
- Eclipse
- 第一章 布尔逻辑
- Fragment 使用hide和show,使用onHiddenChanged代替执行生命周期
- 深刻理解Python中的元类(metaclass)(修正)
- 中文插入MySQL数据库乱码
- 第二章 布尔运算和ALU
- JavaSE学习笔记DayNote01
- Java【老司机专属 Lombok超便捷工具介绍及使用方法】
- 算法设计与分析——删数问题
- Django的是如何工作的
- LaTeX中希腊字母命令
- 分批次处理List
- Java适配器模式
- Python之禅 The Zen of Python