第二章 布尔运算和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先置零,然后按位取反,(000)->(11…1),正好是-1的补码,然后在让这两个数进行加法操作,然后对输出不做操作,就得到了X-1.

这就是书中ALU的功能和6个控制位在不同组合时可以实现的功能函数表:




 

对于其中的基础操作,也是可以由简单的逻辑门实现,比如取反,10,等等通过一个J-K触发器就可以实现,有兴趣的可以看一看有关于数字电路的书,虽然我们现在的ALU不能实现乘法,除法,浮点计算,还有一些数学函数,但是我们可以在软件层面(操作系统)把这些复杂的计算化简成为简单的加减法和逻辑运算,因为要实现这些复杂的操作在硬件层面花费的代价比较大,性价比不高,所以我们在软件去拓展功能.

原创粉丝点击