一篇文章让你用我的世界中的红石搞懂什么是ALU!
目录
1.一些在开始的约定
2.七大逻辑门电路
1、 与门
2、 或门
3、 非门
5、 或非门
6、 异或门
7、 同或门
3.半加器
4.全加器
5.ALU
1.一些在开始的约定
| 相同的概念: | 相同的概念: |
| 高电平 | 低电平 |
| 逻辑真 | 逻辑假 |
| 开关的开
| 开关的关
|
| 灯的亮
| 灯的不亮
|
| 二进制的:1 | 二进制的:0 |
2.七大逻辑门电路
七种常见的逻辑门真值表
1、 与门
:所有输入为高时,才会有输出高。逻辑函数表示为F=A*B。
| 输入A | 输入B | 输出Y | 图示 |
| 0 | 0 | 0 | ![]() |
| 0 | 1 | 0 | ![]() |
| 1 | 0 | 0 | ![]() |
| 1 | 1 | 1 | ![]() |
2、 或门
:所有输入为低时,才会有输出低。逻辑函数表示为F= A + B。
| 输入A | 输入B | 输出Y | 图示 |
| 0 | 0 | 0 | ![]() |
| 0 | 1 | 1 | ![]() |
| 1 | 0 | 1 | ![]() |
| 1 | 1 | 1 | ![]() |
3、 非门
:逆转输入的高低状态。逻辑函数表示为F=A’。
| 输入A | 输出Y | 图示 |
| 0 | 1 | ![]() |
| 1 | 0 | ![]() |
4、 与非门
:所有输入为高时,才会有输出低。逻辑函数表示为F=(A*B)’。
| 输入A | 输入B | 输出Y | 图示 |
| 0 | 0 | 1 | ![]() |
| 0 | 1 | 1 | ![]() |
| 1 | 0 | 1 | ![]() |
| 1 | 1 | 0 | ![]() |
5、 或非门
:所有输入为低时,才会有输出高。逻辑函数表示为F=(A + B)’。
| 输入A | 输入B | 输出Y | 图示 |
| 0 | 0 | 1 | ![]() |
| 0 | 1 | 0 | ![]() |
| 1 | 0 | 0 | ![]() |
| 1 | 1 | 0 | ![]() |
6、 异或门
:输入相同时输出为低,否则为高。逻辑函数表示为F=A’B + AB’。
| 输入A | 输入B | 输出Y | 图示 |
| 0 | 0 | 0 | ![]() |
| 0 | 1 | 1 | ![]() |
| 1 | 0 | 1 | ![]() |
| 1 | 1 | 0 | ![]() |
7、 同或门
:与异或门相反。输入相同时输出为高,否则为低。逻辑函数表示为F= A*B + A’*B’。
| 输入A | 输入B | 输出Y | 图示 |
| 0 | 0 | 1 | ![]() |
| 0 | 1 | 0 | ![]() |
| 1 | 0 | 0 | ![]() |
| 1 | 1 | 1 | ![]() |
3.半加器
我们来用表格模拟一下两个二进制数相加的过程:
| 输入A | 输入B | 进位位 | 加法位 |
| 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 0 |
我们先看输入和加法位的关系:和异或门的的输入输出结果是一样的!
| 输入A | 输入B | 输出 |
| 低 | 低 | 低 |
| 低 | 高 | 高 |
| 高 | 低 | 高 |
| 高 | 高 | 低 |
接着看输入和进位位的关系:和与门的输入输出结果是一样的!
| 输入A | 输入B | 输出 |
| 低 | 低 | 低 |
| 低 | 高 | 低 |
| 高 | 低 | 低 |
| 高 | 高 | 高 |
所以我们用异或门来表示两个二进制数加法中的加法位结果,用与门来表示进位位的结果,二者组合在一起就能完成两个二进制数的加法了。

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

1+0
0+1

1+1
以上就是,一个半加器的完整演示了。其是异或门和与门的组合。
4.全加器
由于上述的半加器只能接收两个输入,如果此时有两个半加器(一个计算高位,一个计算低位),需要计算两个二位二进制数的加法,低位在进行加法运算时需要进位怎么办呢?另外一个半价器并没有一个可以用于接收进位的接收端。

所以我们需要给半加器增加一个接收进位输入的输入端!
| 输入A | 输入B | 进位输入 | 加法位输出 | 进位位输出 |
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 0 | 1 |
| 0 | 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 | 1 |
根据以上的真值表,可以用以下的电路组合来表示上述的过程:
就像这样,将两个半加器组合起来,再组合上一个或门就完成了一个有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 通常由以下几个部分组成:
-
操作数寄存器 (Operand Registers):存储待处理的数据操作数。ALU 需要从寄存器或内存中读取这些操作数。
-
运算控制单元 (Control Unit):决定 ALU 执行的操作类型,如加法、减法、逻辑与、逻辑或等。它接收来自 CPU 控制单元的操作码,并生成相应的控制信号来驱动 ALU 执行特定的运算。
-
算术单元 (Arithmetic Unit):执行各种算术操作,如加法、减法、乘法、除法等。它通常包括加法器 (Adder)、减法器 (Subtractor) 等电路。
-
逻辑单元 (Logic Unit):执行各种逻辑操作,如与 (AND)、或 (OR)、非 (NOT)、异或 (XOR) 等。
-
移位单元 (Shifter Unit):执行位移操作,如左移 (Left Shift)、右移 (Right Shift)、循环移位 (Rotate) 等。
-
状态寄存器 (Status Register) 或 标志寄存器 (Flag Register):存储运算结果的状态信息,如进位 (Carry)、溢出 (Overflow)、零 (Zero)、负数 (Negative) 等标志位。
-
多路复用器 (Multiplexer, MUX):选择输入数据和运算结果的输出路径,使得 ALU 可以处理不同类型的操作。
ALU 的设计和复杂度可能因计算机体系结构和应用需求的不同而有所不同,但上述这些部分通常是一个典型 ALU 的基本组成部分。

相关文章:
一篇文章让你用我的世界中的红石搞懂什么是ALU!
目录 1.一些在开始的约定 2.七大逻辑门电路 1、 与门 2、 或门 3、 非门 5、 或非门 6、 异或门 7、 同或门 3.半加器 4.全加器 5.ALU 1.一些在开始的约定 相同的概念:相同的概念:高电平低电平逻辑真逻辑假 开关的开 开关的关 灯的亮 灯…...
硬盘数据恢复:所需时长、全面指南及注意事项
在数字化时代,硬盘作为我们存储重要数据的核心设备,其重要性不言而喻。然而,由于各种原因,如误删除、格式化、硬盘故障等,我们时常面临数据丢失的困境。数据恢复不仅关乎个人隐私和信息安全,更可能影响到我…...
基于SpringBoot+Vue的科研管理系统(带1w+文档)
基于SpringBootVue的科研管理系统(带1w文档) 基于SpringBootVue的科研管理系统(带1w文档) 科研的管理系统设计过程中采用Java开发语言,B/S结构,采取springboot框架,并以MySql为数据库进行开发。结合以上技术,对本系统的整体、数据库、功能模块…...
计算机组成原理 —— 五段式指令流水线
计算机组成原理 —— 五段式指令流水线 五段式指令流水线运算类指令LOAD指令的执行过程STORE指令的执行过程条件转移指令执行过程无条件转移指令的执行过程 我们今天来看看五段式指令流水线: 五段式指令流水线 五段式指令流水线是一种常见的处理器架构设计中采用的…...
【Bigdata】什么是关系联机分析处理
这是我父亲 日记里的文字 这是他的生命 留下留下来的散文诗 几十年后 我看着泪流不止 可我的父亲已经 老得像一个影子 🎵 许飞《父亲写的散文诗》 关系联机分析处理(Relational Online Analytical Processing,简称 ROLA…...
svd在求解最小二乘中的应用
文章目录 线性最小二乘的直接解法(正规方程解法)什么是伪逆?伪逆矩阵的一般形式伪逆矩阵与SVD的关系 线性最小二乘的直接解法(正规方程解法) 对于 A x b \boldsymbol{A}xb Axb的线性最小二乘问题,有直解析…...
JVM—垃圾收集算法和HotSpot算法实现细节
参考资料:深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)周志明 1、分代回收策略 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取…...
nvidia系列教程-AGX-Orin基础环境搭建
目录 前言 一、Agx-Orin(32GB)介绍 1.1 GPU 1.2 CPU 1.3 NVDLA 1.4 内存 1.5 存储 二、安装JetPack SDK 三、基础环境配置 四、jetpack软件版本 总结 前言 NVIDIA Jetson AGX Orin 是一款功能强大的嵌入式AI平台,专为需要高性能和低…...
使用SpringAOP实现公共字段填充
文章目录 概要整体架构流程技术细节小结 概要 在新增员工或者新增菜品分类时需要设置创建时间、创建人、修改时间、修改人等字段,在编辑员工或者编辑菜品分类时需要设置修改时间、修改人等字段。这些字段属于公共字段,也就是也就是在我们的系统中很多表…...
c++初阶-----适配器---priority_queue
作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 🎂 作者介绍: 🎂🎂 🎂 🎉🎉🎉…...
VSCode上安装C#环境教程
本章教程,教你如何在vscode上,可以快速运行一些基础的c#代码。 1、下载 .NET Code SDK 下载地址:https://dotnet.microsoft.com/zh-cn/download/dotnet/sdk-for-vs-code?utm_source=vs-code&utm_medium=referral&utm_campaign=sdk-install 根据自己的操作系统,选择…...
VS Code 和 Visual Studio 哪个更好
文章目录 VS Code 和 Visual Studio 哪个更好Visual Studio Code简介Visual Studio简介相同点差异点总结 VS Code 和 Visual Studio 哪个更好 Visual Studio Code简介 Visual Studio Code(简称 VS Code)是一款开源的、免费的、跨平台的、轻量级的代码编…...
FCA-数据分析理论试卷
其他参考: https://segmentfault.com/a/1190000043363073 https://blog.csdn.net/CSDN_WYY/article/details/137082340 Part.1:判断题(总分:8分 得分:8) 第1题 判断题 对任意事件A和B,必有 …...
WPF程序通过CadLib4加载CAD .dwg格式文件
1、下载CadLib相关dll文件,主要用到的:WW.dll、WW.Cad.dll、WW.GL.dll 2、程序中引用dll库。 3、创建WPF程序,使用Canvas来加载dwg文件,支持拖动和放大缩小。 4、部分代码: public void Init(string filename) {tr…...
图表全能王(ChartStudio) 上架VisionPro!
图表全能王(ChartStudio) - 终极图表制作工具!支持条形图、折线图、面积图、柱形图、条形图、饼图、玫瑰图、雷达图、牛肉图、风琴图、旭日图、桑基图等图表。 https://apps.apple.com/app/chartstudio-data-analysis/id6474099675 https://apps.apple.com/cn/app/…...
【云原生】Job一次性任务详解
Job一次性任务 文章目录 Job一次性任务一、Job介绍二、运行示例Job 一、Job介绍 Job会创建一个或者多个Pod,并将继续重试Pod的执行,直到指定数量的Pod成功终止。随着Pod成功借宿,Job跟踪记录成功完成的Pod个数。当数量达到指定的成功个数阈值…...
化工厂人员定位采用多种定位技术的融合定位系统的好处
由于化工厂内环境的复杂性和危险性,通常单一的定位技术很难满足全厂区的人员定位需求,如果能将不同定位技术融合在一起,发挥出它们各自的优势,那么就能解决以上问题。 融合定位技术诞生背景 随着科技的不断发展,多种定…...
使用AI绘图工具生成风景图像的教程
随着人工智能技术的飞速发展,AI绘图工具在图像生成和艺术创作方面变得越来越强大,无论你是一个设计师、艺术家,还是仅仅对生成艺术感兴趣的爱好者,AI绘图工具都可以帮助你轻松地创作出惊艳的风景图像。 在这篇教程中,…...
迷你主机:华硕PN65和nuc13pro如何选择?
华硕PN65与NUC 13 Pro:如何做出选择? 在追求高效能与便携性的今天,迷你主机成为了越来越多用户的选择。华硕PN65与英特尔NUC 13 Pro作为市场上两款备受瞩目的产品,各自拥有独特的优势和特点。本文将从处理器性能、扩展性、接口丰…...
分享一个好用的印花重绘工具
本文向大家介绍一款革命性的 AI 工具,它能够将模糊不清的图片转化为具有照片级别的高清图像。这项前沿项目依托于大规模人工智能技术,革新了图像恢复领域。通过文本驱动和智能修复功能,它巧妙地结合了先进的 AI 技术与创新理念,为…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...
永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...
HTML前端开发:JavaScript 获取元素方法详解
作为前端开发者,高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法,分为两大系列: 一、getElementBy... 系列 传统方法,直接通过 DOM 接口访问,返回动态集合(元素变化会实时更新)。…...






























