首页电子与电路8位加法器

➕ 8位加法器

交互式8位行波进位加法器。切换两个二进制数的各个比特位,观察进位信号在8级全加器间逐级传播。同时显示二进制、十六进制和十进制结果。

电子与电路3D简单60 FPS
8bit-adder ↗ 独立打开

🔢 8位行波进位加法器

8位行波进位加法器的交互式可视化演示——它是每个 CPU 算术逻辑单元(ALU)的基本组成模块。切换各比特位,观察进位信号传播,并实时查看更新的二进制、十六进制和十进制结果。

🔬 演示内容

全加器如何根据两个输入比特和一个进位输入计算出和位与进位输出,并将8个这样的级联在一起,使每一级的进位都传递到下一级。进位链的关键路径决定了加法器的最高时钟速度。

🎮 使用方法

点击 A 和 B 的各个比特位来切换开或关。观察进位信号在全部8级中闪烁传播。在电路下方读取二进制、十六进制和十进制的最终结果。

💡 你知道吗?

行波进位加法器是最简单的二进制加法器设计,但其 O(n) 的进位传播时间限制了速度。现代 CPU 使用超前进位加法器或 Kogge–Stone 加法器,可在 O(log n) 时间内计算出所有进位。

关于8位行波进位加法器

本模拟展示了一个8位行波进位加法器,它是 CPU ALU 的算术核心。它将8个相同的全加器级联在一起,每个比特位对应一级。每一级根据两个输入比特和一个输入进位计算出和位与进位输出,使用布尔方程 S = A ⊕ B ⊕ Cₜₙ 和 Cₒₕₜ = (A·B) + (B·Cₜₙ) + (A·Cₜₙ)。进位从第0位一路传播到第7位。

点击「输入 A」和「输入 B」面板中的比特按钮,可在0和1之间切换每一位;每个操作数的十进制值会实时更新。「结果」面板以9位二进制字符串、十进制、十六进制以及溢出标志(第7位的进位输出)显示结果。重置和随机按钮用于设置操作数。这类加法器是处理器执行的每一次加法、减法与地址计算的基础。

常见问题

什么是行波进位加法器?

行波进位加法器是一种数字电路,通过将一串全加器连接起来(每一位一个)来实现两个二进制数相加。每一级产生的进位输入到下一级,因此进位信号沿着链条从最低有效位「传播」到最高有效位。本模拟使用8级这样的结构来相加两个8位数。

半加器和全加器有什么区别?

半加器只对两个输入比特相加,产生一个和位与一个进位,但无法接受输入进位。全加器对三个比特相加——两个操作数加上一个输入进位,这正是使各级能够级联的关键。本加法器完全由全加器构成,使进位得以传播。

单级全加器是如何工作的?

每一级把和位计算为 S = A ⊕ B ⊕ Cₜₙ,即两个输入比特与输入进位的异或。进位输出为 Cₒₕₜ = (A·B) + (B·Cₜₙ) + (A·Cₜₙ),只要三个输入中至少有两个为1即为1。该进位输出成为下一位的输入进位。

此页面上的控件有什么作用?

「输入 A」和「输入 B」面板各显示从第7位到第0位的8个比特按钮;点击可在0和1之间切换。「结果」面板以二进制、十进制和十六进制显示结果,并附带溢出指示。重置按钮将两个数都清零,随机按钮则用随机比特填充两者。

为什么二进制结果显示为9位?

两个8位数相加可能产生大于255的值,而255是8位寄存器所能容纳的最大值。多出的第9位记录了第7位最终的进位输出。由于每个操作数最大可达255,可能的最大和为510,需要9位才能完整表示。

溢出标志在这里是什么意思?

溢出标志显示最高有效位(标记为 C₈)的进位输出。当无符号和超过255时,它会置为「是(C₈=1)」,意味着结果已无法用8位表示。在真实 CPU 中,这个进位位保存在状态寄存器中,用于多字节运算和比较。

这是否准确模拟了 CPU 的加法方式?

是的,其逻辑完全忠实:它实现了真实的全加器布尔方程,以及与硬件行波进位加法器完全相同的从左到右的进位链。主要的简化在于时序——动画为了清晰而让进位路径闪烁显示,而非再现以纳秒计的真实门传播延迟。

为什么行波进位加法器被认为速度较慢?

因为每一级都必须等待其下一级的进位,最坏情况下的延迟会随位数线性增长,即 O(n) 的传播时间。对于宽字长,进位链上的这一关键路径限制了电路能被驱动的最高时钟速度。

存在哪些更快的加法器设计?

超前进位加法器从「生成」和「传播」信号并行计算所有进位,几乎能在 O(log n) 时间内得到全部进位。其他快速设计还包括进位选择、进位保留以及并行前缀加法器(如 Kogge-Stone),它们都用额外的逻辑换取更短的延迟。现代处理器都依赖这些设计,而非普通的行波进位。

这与减法有什么关系?

计算机通过将第二个操作数取二补码(按位取反再加1)来实现减法。同一套加法器硬件在输入取反后即可处理减法,这正是为什么一个行波进位加法器配合反相器和一个进位输入,就能在 ALU 中同时完成加法与减法。

⚙ Under the hood

8-bit ripple-carry adder with interactive bit-toggle buttons. Visualizes carry chain propagation across all 8 full-adder stages. Displays result in binary, hexadecimal, and decimal.

Canvas 2DBinary AdderRipple CarryDigital LogicALU

3D · Three.js / WebGL renderer · 60 FPS target · runs fully client-side, no install

What did you find?

Add reproduction steps (optional)