asp sqlserver做网站,微信免费推广平台,商丘网站建设有哪些,深圳有做网站的公司吗算术逻辑单元#xff1a;
之前提过的运算器包括MQ,ACC,ALU,X,PSW#xff1b;运算器可以实现运算以及一些辅助功能#xff08;移位#xff0c;求补等#xff09;。
其中ALU负责运算#xff0c;运算包括算术运算#xff08;加减乘除等#xff09;和逻辑运算#xff08… 算术逻辑单元
之前提过的运算器包括MQ,ACC,ALU,X,PSW运算器可以实现运算以及一些辅助功能移位求补等。
其中ALU负责运算运算包括算术运算加减乘除等和逻辑运算与或非异或等。ALU能同时处理的比特位数通常等于机器字长。 逻辑运算
与 YA*B ; 类似于乘法a和b要都为1输入才能为1 或 YAB; 类似于加法a和b有一个为1输入就为1
非 YĀ;就是取反a是0y就是1a是1y就是0.
这里还有与或非的门电路下面的图片。
在逻辑运算中与 的优先级是大于 或的与好比乘嘛乘优先于加。
逻辑运算也是符合分配律和结合律的像这样a*cdacad这个就是逻辑表达式逻辑表达式本质上就是对电路的数学化描述通过逻辑表达式可以构建出对于的电路所以简化逻辑表达式实际上也就是在简化电路还是钱的问题简化省点钱。
这里在逻辑运算中实际上还有个反演律可以看一下。 复合逻辑
异或异或就是相同为 0不同为1.可以通过异或门电路来求偶校验位。
同或同或的效果和异或的相反。
还有与非和或非就是这两个逻辑的结合。 一位全加器
对于全加器每次应该有三个输入当前位的两个数值来自低位的进位两个输入当前位求和的值本位和向高位的进位哎感觉这都蛮抽象的用语言不太好描述。 这里对于向高位的进位的实现还是挺有意思的。
然后还有一个串行加法器其只有一个全加器但比上面多了个进位触发器用来保存进位数数据逐位串行送入加法器中进行运算的时候进位触发器用来寄存进位信号以便参与下一次运算。这样的话如果操作数长n位的话加法就要分n次进行每一位产生一位和并且串行逐位地送回寄存器。 并行加法器
可以把多个全加器串接起来每一个全加器处理一位的数据这样可以进行两个n位数的相加这样的叫做串行进位的并行加法器.
串行进位又称为行波进位每一位进位直接依赖于前一位的进位即进位信号是逐级形成的这样实际上好像也并不能太多提升运算速度因为还是要等前面的算完才能轮到后面的。这里计算速度就主要取决于进位产生的速度以及数据传递的速度。 并行进位加法器
上面说了依赖低位来获得进位数据的话会受到进位产生的速度和数据传递速度的影响这里实际上实际上低位的进位数据是通过低位运算产生的那么可以直接通过向处理高位数据的全加器输入高位数据的同时也输入低位数据这样就是可以不等待低位的运算结果而在一开始就进行运算也就是说第 i 位向更高位的进位可以根据被加数加数的第 1 ~ i 位再结合最开始的进位来确定。
根据上面说的可以对并行加法器优化实现的结果是并行进位的并行加法器各级进位的信号同时形成又称为先行进位同时进位但这里实际上对于高位来说和最初的那个一位加法器有点一样从最低位开始算到当前位可能比一位加法器好在不用反复的读取和输入数据了一位加法器的每一位的运算结果是要传送到寄存器上的嘛而这里目的只是当前的高位过程中求的值无所谓。同时也要指出随着位的增加越高位的运算就会越复杂后面得到结果也会越来越慢。 补码加减运算其
加法器的原理就是输入被加数和加数被加数和加数比较长的话大于机器字长加法器一次运算是不够的还有来自低位的进位通过运算输出 最高位产生的进位和相加的结果这里实际上还有其他的输出就是标志位。 补码加/减运算方法
相加的话直接按位相加就行
相减的话将减数的补码全部按位取反末位加1就是正变负负变正比如正变负吧正的原码和补码一样直接把补码当原码看这个时候是正数的原码把符号位取反 0 变 1这个时候是这个数负数的原码然后将这个负数的原码变成补码操作就是符号位不变其他位按位取反然后在末位加1嘛刚刚符号位由正变负的时候已经变过了所以相当于全部位取反然后加1. 这个不好说这个就是补码的加法器它这里多了一个Sub加/减法控制信号同时向选择器和低位的进位输入信息如果是加法的话非门是关着的低位的进位输入是 0 这样就都是补码直接参与运算如果是减法的话那非门就是打开的另一边是关着的这样的话就可以实现减数的全部为按位取反而末位加一这个操作的实现是通过向低位的进位输入 1 来实现的这里真的很巧妙一个输入信号即控制了加减又实现了对数据处理其实两个都是数据的处理反正就是挺开眼的。
对于无符号整数的加法/减法也可以用该电路实现其实无符号整数就可以理解为正数能够处理正数自然也可以处理无符号整数了。但是无符号整数也会有溢出的出现注意。