首页 > 其他分享 >一篇文章让你用我的世界中的红石搞懂什么是ALU!

一篇文章让你用我的世界中的红石搞懂什么是ALU!

时间:2024-08-10 18:52:38浏览次数:12  
标签:输出 逻辑 加法 进位 红石 搞懂 ALU 输入

目录

1.一些在开始的约定

2.七大逻辑门电路

1、 与门

2、 或门

3、 非门

5、 或非门

6、 异或门

7、 同或门

3.半加器

4.全加器

5.ALU


1.一些在开始的约定

相同的概念:相同的概念:
高电平低电平
逻辑真逻辑假

开关的开

开关的关

灯的亮

灯的不亮

二进制的:1二进制的:0

2.七大逻辑门电路

七种常见的逻辑门真值表 

1、 与门

:所有输入为高时,才会有输出高。逻辑函数表示为F=A*B。

输入A输入B 输出Y图示
000
010
100
111

2、 或门

:所有输入为低时,才会有输出低。逻辑函数表示为F= A + B。

输入A 输入B  输出Y图示
000
011
101
111

3、 非门

:逆转输入的高低状态。逻辑函数表示为F=A’。

输入A  输出Y图示
0   1
1  0

 
4、 与非门

:所有输入为高时,才会有输出低。逻辑函数表示为F=(A*B)’。

输入A输入B 输出Y图示
001
011
101
110

5、 或非门

:所有输入为低时,才会有输出高。逻辑函数表示为F=(A + B)’。

输入A输入B 输出Y图示
001
010
100
110

6、 异或门

:输入相同时输出为低,否则为高。逻辑函数表示为F=A’B + AB’。

输入A输入B 输出Y图示
000
011
101
110

7、 同或门

:与异或门相反。输入相同时输出为高,否则为低。逻辑函数表示为F= A*B + A’*B’。

输入A输入B 输出Y图示
001
010
100
111

3.半加器

 我们来用表格模拟一下两个二进制数相加的过程:

输入A输入B进位位加法位
0000
0101
1001
1110

我们先看输入和加法位的关系:和异或门的的输入输出结果是一样的!

输入A输入B输出

 接着看输入和进位位的关系:和与门的输入输出结果是一样的!

输入A输入B输出

        所以我们用异或门来表示两个二进制数加法中的加法位结果,用与门来表示进位位的结果,二者组合在一起就能完成两个二进制数的加法了。 

 

当然用MC中的红石电路展示就是这样了:

0+0

 1+0

 0+1

 1+1

 以上就是,一个半加器的完整演示了。其是异或门与门的组合。

4.全加器

        由于上述的半加器只能接收两个输入,如果此时有两个半加器(一个计算高位,一个计算低位),需要计算两个二位二进制数的加法,低位在进行加法运算时需要进位怎么办呢?另外一个半价器并没有一个可以用于接收进位的接收端。

        所以我们需要给半加器增加一个接收进位输入的输入端!

输入A输入B进位输入加法位输出进位位输出
00000
00110
10010
10101
01010
01101
11001
11111

 根据以上的真值表,可以用以下的电路组合来表示上述的过程:

        就像这样,将两个半加器组合起来,再组合上一个或门就完成了一个有A,B,进位输入和加法位输出和进位位输出的全加器了。

用MC中的红石电路展示就是这样了:

 示例:

进位输入1,A:1,B:1,

加法位输出:1,进位位输出:1。

逻辑正确。

像这样的,将N个全加器串联在一起,就可以构成计算机中的最基础的运算部件——N位加法器:

        像这个,每层串联4个全加器,共八层,层层串联,可知如下就是一个32位加法器,可以用来计算结果在2^32-1之内的加法。

5.ALU

计算机组成原理中的算术逻辑单元(Arithmetic Logic Unit,简称ALU)是中央处理器(CPU)中的一个核心组件。它负责执行所有算术和逻辑操作,如加法、减法、乘法、除法、与(AND)、或(OR)、非(NOT)以及异或(XOR)等。ALU是CPU进行数据处理和计算的主要部分。
具体来说,ALU执行以下几类操作:
算术运算:包括整数加法、减法、乘法和除法。
逻辑运算:包括与、或、非、异或等逻辑操作。
移位操作:包括算术左移、算术右移、逻辑左移、逻辑右移等。
比较操作:用于比较两个操作数的大小,生成相应的标志位(如大于、小于、等于等)。
ALU通过接收控制单元(Control Unit)发出的指令,并根据操作码(Opcode)和操作数进行相应的计算,最后将结果返回给寄存器或存储器。这使得计算机能够执行各种复杂的计算任务。

一个典型的 ALU 通常由以下几个部分组成:

  1. 操作数寄存器 (Operand Registers):存储待处理的数据操作数。ALU 需要从寄存器或内存中读取这些操作数。

  2. 运算控制单元 (Control Unit):决定 ALU 执行的操作类型,如加法、减法、逻辑与、逻辑或等。它接收来自 CPU 控制单元的操作码,并生成相应的控制信号来驱动 ALU 执行特定的运算。

  3. 算术单元 (Arithmetic Unit):执行各种算术操作,如加法、减法、乘法、除法等。它通常包括加法器 (Adder)、减法器 (Subtractor) 等电路。

  4. 逻辑单元 (Logic Unit):执行各种逻辑操作,如与 (AND)、或 (OR)、非 (NOT)、异或 (XOR) 等。

  5. 移位单元 (Shifter Unit):执行位移操作,如左移 (Left Shift)、右移 (Right Shift)、循环移位 (Rotate) 等。

  6. 状态寄存器 (Status Register) 或 标志寄存器 (Flag Register):存储运算结果的状态信息,如进位 (Carry)、溢出 (Overflow)、零 (Zero)、负数 (Negative) 等标志位。

  7. 多路复用器 (Multiplexer, MUX):选择输入数据和运算结果的输出路径,使得 ALU 可以处理不同类型的操作。

ALU 的设计和复杂度可能因计算机体系结构和应用需求的不同而有所不同,但上述这些部分通常是一个典型 ALU 的基本组成部分。

标签:输出,逻辑,加法,进位,红石,搞懂,ALU,输入
From: https://blog.csdn.net/weixin_65866298/article/details/140908015

相关文章

  • 【计算机网络】彻底搞懂TCP 的三次握手和四次挥手(超详细,带案例,带图解,带面试题)
    在计算机网络中,TCP(传输控制协议)是一种可靠、有序的数据传输协议。TCP使用三次握手建立连接,四次挥手关闭连接。理解这两个过程对于网络编程和网络协议非常重要。本文将通过详细的文字解析和生动的图示,帮助你彻底搞懂TCP的三次握手和四次挥手。......
  • 运维 + AI,你得先搞懂这些
    很感谢夜莺提供如此优质的平台能和行业内顶尖技术大佬做面对面的交流,在这个会议中又学习到了很多有趣有深度的内容,给我在未来探索的道路上提供了一些新的指引方向。同时感谢夜莺社区的邀请,在此再做一次关于AI方面的交流文章,由于目前我也是在AI这条赛道上的探索者,如果有不专业的地......
  • 一文搞懂MES、ERP、SCM、WMS、APS、SCADA、PLM、QMS、CRM、EAM及其关系
    MES、ERP、SCM、WMS、APS、SCADA、PLM、QMS、CRM、EAM各个系统到底是什么意思?今天一文就给大家分享!在企业管理中,各种信息系统扮演着至关重要的角色,它们如同企业的神经系统,确保各个部分高效协同运作。MES(ManufacturingExecutionSystem)制造执行系统,就如同工厂的前线指挥官,它实......
  • 【Pyspark-驯化】一文搞懂Pyspark中过滤数据when和otherwise函数的使用技巧
    【Pyspark-驯化】一文搞懂Pyspark中过滤数据when和otherwise函数的使用技巧 本次修炼方法请往下查看......
  • 【学习日记3】DAIL-SQL论文:Text-to-SQL Empowered by Large Language Models: A Bench
    PS:自己回顾用的ABSTRACT        大型语言模型(LLMs)已成为Text-to-SQL任务的新模式。然而,缺乏系统的基准测试限制了有效、高效和经济的基于LLM的Text-to-SQL方案的发展。为了解决这一挑战,本文首先对现有的提示工程方法进行了系统且广泛的比较,包括问题表示、示例......
  • 一文搞懂RabbitMQ
    一、快速入门1.1安装dockerrun\-eRABBITMQ_DEFAULT_USER=root\-eRABBITMQ_DEFAULT_PASS=root\-vmq-plugins:/plugins\--namemq\--hostnamemq\-p15672:15672\-p5672:5672\-p15692:15692\--networkemer\-d\rabbitmq:3.8-management 首先创建......
  • array-value
    赛时想到了二分+trie但是却没有想到怎么维护啊看到异或,可以想位运算,trie和异或基。跟位运算肯定没啥关系,而异或基是选任意多个数进行异或,trie是两个数进行异或,所以这道题目用trie二分,考虑是否存在至少\(k\)个区间不超过\(mid\)check函数:我们枚举区间的右端点\(r\),找到一个最大......
  • ValueError:层“dense_2”需要 1 个输入,但它收到了 2 个输入张量
    我无法加载我的模型,它一直显示错误ValueError:层“dense_2”需要1个输入,但它收到了2个输入张量。收到的输入:[<KerasTensorshape=(None,7,7,1280),dtype=float32,稀疏=False,name=keras_tensor_2896>,<KerasTensorshape=(None,7,7,1280),dtype=float32,稀疏=F......
  • 一文搞懂C/C++常用编译器
    1.C++编译器介绍1.1.MSVC1.1.1.VisualC++与VisualStudio的版本对应关系1.1.2.工具链的主要工具1.2.GCC1.2.1.GCC的主要优点1.2.2.GCC的常用工具1.2.3.MinGW1.3.Clang/LLVM1.3.1.Clang介绍1.3.2.Clang与LLVM的关系1.3.3.Clang/LLVM与GCC2.......
  • 【Pyspark-驯化】一文搞懂Pyspark中的withColumnRenamed函数的使用技巧
    【Pyspark-驯化】一文搞懂Pyspark中的withColumnRenamed函数的使用技巧 本次修炼方法请往下查看......