计算机的数学大脑--------ALU(算术逻辑单元)

A(Arithmetic)L(Logic)U 算术逻辑单元------->顾名思义分为算术单元逻辑单元

算术单元

负责计算机里的所有数字操作

首先研究两个一位数相加可能的情况:

inputAinputBsum
000
011
101
110

对于计算机来说1=>true,0=>false;
所以他的所有情况刚好符合逻辑电路中的异或门(XOR),但第四种情况下却不完全正确,因为它产生了进位,而且目前表格并没有进位的展示,所以我们先对表格进行一个完善。如下:

inputAinputBcarry(是否进位)sum
0000
0101
1001
1110

现在想要继续通过电路表示这个表格中的内容,我们需要在之前异或门(XOR)的基础上增加一个与门(AND), 如下图所示:
半加器
它可以实现的功能就是可以正确的表示两个一位数相加的结果,它对于计算机来说非常的重要!所以我们决定给它起一个响亮的名字:“半加器

半加器已经实现了,但我们不可能只进行两个一位数的计算,通常情况下我们进行多位二进制数的计算,如:1101+1001,这时按照自左到右计算时,从第二位开始我们就需要考虑上一位的进位情况,所以在多位二进制相加时,我们通常要计算的是三个一位数相加的情况(inputA的当前位+inputB的当前位+Cin上一位的进位情况),为满足这个情形,我们在之前的基础上继续完善,制作出“全加器”如下图所示:
全加器
可能这个图稍微有些复杂,如果不太清楚那就不需要过多的关注细节,只需要知道全加器就是我们之前的两个半加器和一个或门组合而来输出结果和进位情况,为了正确表达三个一位数相加结果的电路即可。之后我们把半加器和全加器分别抽象成一个组件,赶紧来看看我们搞出的半加器和全加器是如何在计算机中起作用的吧。
示例:假设现在想求10101101+11100101的值,具体的线路链接如下
在这里插入图片描述
需要特别指出的是:最后一个全加器有进位的输出,代表两数只和太大了,超过了这个加法器原本能表示的8位数即"数据溢出",数据溢出会导致错误和不可预期的结果,所以我们需要尽量避免溢出,可通过加更多的全加器操作更多位数的数字让溢出更难发生,但他有相应的缺点1、更多的逻辑门 2、每次进位都需要时间。

ALU的算术单元,也可以做一些其他的数学运算,一般有如下8个操作:
加法、减法、带进位的加法、带借位的减法、+1、-1、取反、数字无改变通过
疑惑🤔:最基本的四则运算中的乘法和除法去哪了?简单的ALU没有专门处理乘除法的电路,一般是通过加法和减法来实现的,如:12✖️5=12+12+12+12+12+12(把12加五次得出结果,同理除法就是减5次)
tips:现在的手机和电脑的处理器一般都有专门做乘法的算术单元

逻辑单元

执行逻辑操作:AND、OR和NOT,也可以做简单的数值测试,如:一个数字是否为负数等等…

ALU

当然工程师们在使用ALU或者绘制电路图的时候并不想关心它里面的构造的所以将ALU以一个类似"V"的抽象符号代替如下:
ALU
操作码:操作码的长度(其总线宽度)决定了 ALU 可以执行的操作的最大,例如一个4位的操作码,表示这个ALU最多可以执行16(16=2^4)种操作,"+"的操作码为1000
状态输入:传递了来自上一级 ALU 操作的进位。
状态输出:是各类单独的信号,补充表示了有关当前 ALU 操作结果的信息,一般有如下情况:
Carry-out:表示由加法运算产生的进位、由减法运算产生的借位或由二进制移位运算产生的溢出位。
Zero:表示运算结果的所有位均为逻辑零。
Negative:表示算术运算结果为负。
Overflow:表示算术运算的结果溢出,超出了 Y 的数值范围。
Parity:表示输出数 Y 的奇偶校验结果,说明 Y 中的含有逻辑 1 的数量的奇偶性。
运算结果:两数操作结果

tips:以一个具体的例子来说明上图:假设这个ALU是一个4位的,进行的运算:1001+1100
操作数A:1001 |
操作数B:1100 |
操作码:1000 |
状态输入:0|
状态输出:{
Carry-out:1;
Zero:0;
Negative:0;
Overflow:1;
Parity:0
}|
运算结果:0101

  • 17
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值