创新互联MinecraftWiki教程:加法器[]

该文章需要整理以符合格式指导。 
讨论

在丽江等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站建设、网站制作 网站设计制作按需网站建设,公司网站建设,企业网站建设,高端网站设计,成都全网营销,外贸营销网站建设,丽江网站建设费用合理。

请帮助优化文章格式来让它符合格式指导。

目录

  • 1 加法器
    • 1.1 第一个版本
    • 1.2 单列版加法器
    • 1.3 第二个版本
    • 1.4 第三个版本
    • 1.5 快速加法器
    • 1.6 活塞加法器
    • 1.7 4位加法器
    • 1.8 交替式4位加法器
  • 2 减法器
  • 3 逻辑单元
    • 3.1 算术逻辑单元(ALU)

加法器[ ]

第一个版本[ ]

全加器的游戏截图

全加器

一个全加器接受两个输入位A、B以及一个来自低位的进位,并输出一位和以及向高位的进位。它依赖于2个异或门,2个与门和1个或门。经过一些方面的考虑后,这些逻辑门结构可以被压缩

如图,A、B是两个输入位且C'是来自低位的进位。它产生一个和(S)以及向高位的进位(C)。当多个全加器单元连接在一起时,将下一个全加器的C'和当前全加器的C连接起来,以便产生的进位能够向高位传递。

全加器示意

半加器

半加器和全加器几乎相同,但没有第二个异或门并且直接从第一个异或门输出和(S)。它没有来自低位的进位(C'),但向高位的进位(C)仍然在第一个异或门顶端且向第一个全加器产生一个进位。有的运算器不使用半加器作为第一位,以支持增量(允许向第一位进位)。

单列版加法器[ ]

全加器

2格宽全加器的游戏截图

这种全加器相似于上面的那种,除了事实上它两格宽且易于对齐。这样的设计对于最小化水平空间是相当有用的,而且可以被成列地建造并接入两条红石总线,消除因扩张总线以接入扩大规模的加法器(的要求)致浪费的空间。

全加器的示意图

教程视频(在 YouTube 上观看)
 

第二个版本[ ]

全加器

使用的逻辑门:同或门(2),蕴涵门,非门,或门,与门

尺寸:6×12×5(包括输入输出信号占用的空间)

这个加法器将取2个输入位A、B和1个低位的进位C(事实上是C的否定C而并非是C,即示意图中Layer 1左下角红石端的信号值)并将它们相加,产生一个和位(S)和一个向高位的进位(这里同样是C的否定C而并非是C)。

使用上述的逻辑门时,请注意输入和输出。你可能想知道为什么有那么多反相的信号位用以代替常规的信号位。

上述加法器使用了同或门而不是异或门,因为这样设计更加紧凑。同理,我们使用蕴含门来代替与门,这样能够更加紧凑。

因此对于(结构)最紧凑的加法器,必然要使用反相的信号。这些加法器太复杂,很难用(每格可以容纳2层的)平面图来表示,所以将每一层都单独表示为一张示意图以使建造过程更加清晰易懂。

全加器的示意图

半加器

使用的逻辑门:同或门,蕴含门

尺寸:5×4×4

这个加法器将2个输入位相加得到结果作为和输出(S)。如果2个输入位的信号值都是1,进位C将会得到1(C将会是0)。可以对这个半加器进行修改来获得一个非反相的输出C,但使用这个半加器才能作为一个全加器链(多位全加器)的起始部分。

拓展: 对于刚接触红石的人来说,这样更容易理解:我们说输出位C有一个非门将信号反相并连接到一个铁门、活塞门之类的门,输出位S连接到一些黏性活塞来控制地面陷阱。假设有一个1×1×1的方块不受黏性活塞影响,称之为安全方块。当输入位A有红石信号时,门打开的同时,地面也会打开,如果你站在安全方块上,你就不会掉下去。输入位B只控制地面,但如果输入位A有红石信号,则输入位B会同时控制这二者。(同理)当两个输入位都有红石信号时,输入位A只控制地面。这意味着如果你离开服务器的时候不想让任何人进来,你可以给输入位A和B加上红石信号,当其他人移除输入位A的红石信号时,地面会打开,但门依然是关闭的。即使他们知道这个秘密也仍然不能进来。

半加器的示意图

第三个版本[ ]

全加器

尺寸:5×6×3

每位进位都是相互对齐的,这样可以方便地串联这些子模块。

全加器的示意图

快速加法器[ ]

当建造高级数字电路比如计算机和乘法器时,使用的加法器必须尽可能地快,以确保最大的运行速度。简单的加法器存在一个基本的速度问题,许多加法器设计都尝试改善这一问题。这个问题是进位传播的延迟,这是由加法器的进位方式所引起的延迟。我们可以看如下的1111 + 0001的例子:

1111
0001
----
1110

这是加法运算过程的第一步,对两个输入异或。由于最低有效位有两个1,这会触发与门产生进位并送往高位:

  1
1111
0001
----
1100

此时就产生了问题:由于待进位的当前位上仍然有两个1,所以会再次触发向高位的进位。这是通过将第一个半加器的输出与低位的进位相加来完成的,这里存在很大的问题,因为接下来你将反复产生向高位的进位直到越过最高位。如果每个与门产生2刻的延迟,为了计算最后一步中需要相加的所有进位,总共需要2刻×4,即8刻的时间。

如果现在你要计算999+1,你不会有“9 + 1 = 10,进位1,所以9 + 1 = 10,进位1,所以9 + 1 = 10,得到1000”这种闲得无聊的想法。在高级电路中同样也是如此。

真正的电路工程师和有创造力的红石玩家已经设计出了计算进位比这种串行方式更高效的电路。

顺便提一下,以这种串行方式计算进位的加法器被称为行波进位加法器

活塞加法器[ ]

解决行波进位存在的问题的最简单、最经典的方法之一是使用带活塞的即时与门。这种加法器简单快速,但由于使用活塞导致电路不稳定,当方块因意外而掉落时,整个电路就被破坏了。活塞也存在时钟同步上可能难以忍受的不便之处,在建造高级电路时可能会对(整个装置)的同步时钟产生严重依赖性。

每当产生进位时,其将会通过带拉杆的红石线路传送,而不是与门。活塞收缩,进位C被送到高位,这一过程完全没有产生进位传播的延迟(直到信号强度耗尽)。

下面这个视频展示了这种逻辑的一个简单实现。这种设计庞大而且分散,容易看到每一个单独的加法器部分以及进位逻辑。

YouTube视频(在 YouTube 上观看)
 

4位加法器[ ]

使用的逻辑门:同或门(7),蕴含门(4)非门(4),或门(3),与门(3)

尺寸:23×12×5

注意!最低有效位(个位)在图的左边,这样可以更清楚地看到从半加器到全加器的过程。如果想要通常的从左向右的输入,请翻转示意图。

这个加法器将第2、第4位的输入位(A和B)相加,每加1位产生一个和(S)以及一个进位(C)。和的顺序与输入位顺序相同,这意味着图中最左边的输出位S代表结果的最低有效位。这是一个多位加法器的例子;加法器可以通过这种方式串联起来以计算更多位数的数字。

4位加法器示意

交替式4位加法器[ ]

功能相同但设计不同,使用4个全加器而不是1个半加器和3个全加器。

注意:开关为输入位A和B(顶部为低位进位C)。

交替式4位加法器示意

减法器[ ]

减法和加法的道理是一样的,例如,3 - 2 = 3 + (-2) = 1。因为我们已经有了加法计算的框架,只需要添加一个负号就可以简单地得到结果。问题在于如何表示这个负数。

我们对小学减法中向高位借位的概念很熟悉,比如这样:

 5623
- 128
-----

我们没有办法用3减去8,所以我们从高一位借了1以通过13减8代替(结果显然是5)。

   1
 5623
- 128
-----
    5

然而计算机是没法做这种考虑的,所以当计算机找到一个负数时,它不会也不能在前面硬添一个负号。它只会像如下这样从高位进行"借位"相减:

 000000
 -    3
-------
-999997

这在二进制中同样适用。让我们用一个4位二进制数作为例子:

   1      11     111    1111
 0000    0000    0000    0000
-0011   -0011   -0011   -0011
-----   -----   -----   -----
-   1   -  01   - 101   -1101

我们可以按照这个方式一直反复计算下去,但这并没有什么用。这就体现了4位寄存器的作用:它将在接收到4位数据后截断(抛弃其他数据)。因此,在我们截断这个数字之后(在这个例子中已经得到了体现,否则最后结果的左边会有无穷多个1),多亏这个小技巧,我们可以对这4位数据之外的0做任何想做的事情,包括在它们之前添一个1(这将在之后被证明是非常有用的)。

10000
-0011
-----
 1101 <-- 注意:这个数字是正数!成功!

还记得我们说过我们的红石没有特别的方法来区分正数和负数吗?我们只是创造了一种区分的方式:如果数字的符号位(最高位)是1,那么它就是一个负数。这种利用在二进制数中的小技巧其实是一套名为“二进制补码”的理论。

二进制补码的正式定义是:

一个负数b的补码等于2 ^ (n+1) - b,其中n是b的位数。

本质上说,-b的补码就是将b的补码的各位取反(用1替换0,用0替换1)再加1。

我们所做的是将最高位变成一个"负号"(如果它是1),但如果你一直在阅读这个页面,你会意识到这没有那么简单。通常把带有这种符号标识位的数字称为带符号的整数。 在普通的加法器中,这种二进制补码规则并不生效,这种数字称为无符号的整数。无符号的数字可以比带符号的数字取到更大的值,但不能比0小;带符号的数字最大只能取到无符号数字所能取到的大约一半,但可以比0小。 这意味着这两种数字有相同长度的取值范围,但取值区间的位置不同,比如下面的8位整数的例子:

无符号: 0 - 255
带符号:-128 - 127

应当注意的是,当使用最小的有符号数(在上面的例子中是-128)时,可能会出现一些匪夷所思的问题,所以应该避免这种情况。

现在我们有了一种用正的值来表示负数的方法,将它运用到加法器中就很简单了。目前我们可以计算

A + B

我们要计算的是

A - B

A + (-B)

所以,只要我们输入B的补码,加法器就变成了减法器。通过使用符号位(最高位)作为进位的1,这很容易实现。剩下的就是如何对B求补码。

在实现此功能时需要注意一件重要的事情:因为得到的结果依然是二进制补码,所以存在减去符号位的问题,因此要倒过来减。这个问题通常由最高位的加法器来处理。

这都可以实现到一个加法器中:

电路中加入了一个控制位,当它被通入红石信号时,就会变成一个减法器,当没有红石信号时则是一个加法器。此外,在控制位和输入B的每一位之间都增加了一个异或门,将每个异或门的输出作为每个加法器单元真正的输入位B。最后,为了使二进制补码单元兼容,需要在控制位和符号位上添加最后一个异或门。

这是在CPU中实现负数和减法的最简单方法,因为它可以优雅地进行加法运算并将结果存储在寄存器中。如果需要在计算器中实现这种操作,只需要将输出结果减1,然后将符号位之外的每一位取反。如果数字是负数,只需要将符号位设为1即可。

为了建造一个减法器,只需要对其中一个输入按位取反即可。如果这个数是负数,那么结果也是相反的。在实际的计算机中,符号位决定数字的正负性,如果将它也纳入考虑(应用相同的取反规则),你可以判断出这到底是一个负数,还是仅仅是一个较大的数字。

逻辑单元[ ]

在电路中使用一个逻辑单元可能是有用的。逻辑单元会根据控制信号来决定输出哪种操作的结果。这样的逻辑单元可以使用在更加复杂的电路中,比如ALU(算术逻辑单元)。

这是一个2位逻辑单元的例子,它的控制信号有4种状态。

它的输出在最上面一行,从左到右依次通过输入11、00、01和10来触发(输入在左边,上面是低位,下面是高位)

以下是另一个使用格雷码的简化版本,输出体现在最上面一行红石火把的亮灭。这种设计可以扩展到任意的位数,但考虑到时间效率的问题,一般不会超过1个字节(8位)。输出从左到右依次通过输入11、01、00、10来触发。

算术逻辑单元(ALU)[ ]

算术逻辑单元(ALU)是CPU的核心部分。它进行计算和逻辑处理,然后将结果传递给寄存器。ALU根据输入来选择一个特定的运算操作,执行它,然后给出结果。

下图显示的ALU是一个1位的ALU,可以执行下列运算:ADD(求和),AND(求与),XOR(求异或)。它接收输入A和B,然后执行所选择的运算操作。阅读加法器以了解ADD运算是如何工作的。XOR和AND运算是在逻辑电路页面上所介绍的基本功能。

可以向ALU中添加更多的运算操作,比如乘法,除法,OR(求或),NAND(求与非)等等,这些运算都可以通过对ALU进行一定的修改来加入到其中。

这样的1位ALU可以相互连接起来以形成多位的ALU。就像加法器一样,把示意图中的C out端连接到另一个ALU的C in端即可。

1位ALU示意

这是一个Minecraft中实际建造的1位ALU的游戏截图。你可以在这里查看它的3D示意

红石

参见: Template:Redstone/content
[编辑]

教程(作下划线标记的教程为中文独有教程)

新手教程
  • 菜单屏幕
  • 游戏术语
  • 下载、安装与购买
新手生存
  • 新手指南
  • 第一天
  • 第二天
  • 第三天
  • 提示与技巧
  • 饥饿管理
  • 不该做的事
  • 生存注意事项
庇护所
  • 庇护所
    • 沙漠
  • 最佳居住生物群系
  • 最佳建筑材料
  • 建筑与结构
  • 房屋类型
  • 导航
综合
  • 无聊的时候做什么
  • 村庄生存
  • 跑酷
  • 空置域
  • 伪和平
  • 节省时间的小窍门
  • 在水下利用TNT破坏方块
  • 成就指南
  • 进度指南
  • 拓殖
  • 战斗
  • 完成冒险
  • 创建一个村庄
  • 双持
  • 沙漠生存
  • 雷暴生存
  • 下界生存
  • 从零开始下界生存
  • 末地生存
  • 探索洞穴
  • 家具
  • 在和平难度中收集资源
  • 利用碰撞箱
  • 测量单位
  • 使用地图
  • 测量距离和角度
  • 采矿技术
    • 钻石
    • 化石
    • 远古残骸
  • 下界快速旅行
  • 下界传送门
  • 支柱跳跃
  • PvP
    • Java版1.9前、基岩版
    • 基地
  • 穿越和破坏基岩
  • 村庄机制
  • 考古
  • Minecraft和教育
  • 不可破坏的末地水晶
  • 使用更少的末地水晶重生末影龙
  • 透视镜
  • 挂机池
  • 光速船[仅基岩版]
  • 无材料消耗转换药水类型[仅基岩版]
  • 汇报漏洞
  • 在超平坦地图中管理史莱姆
建筑
  • 给工程添加美感
  • 空气闸
  • 建筑术语
  • 建造游轮
  • 建造大都市
  • 建造过山车
  • 建造安全的家园
  • 建造水建筑
  • 建造几何体
  • 防御
  • 电梯
  • 带釉陶瓦的图案
  • 建造更好的地板
  • 像素艺术
  • 牧场
  • 屋顶类型
    • 弧形屋顶
    • 屋顶建造指南
    • 装饰屋顶
  • 暗门
  • 建造居住地
  • 水下之家
  • 墙壁和桥墩
  • 水闸
  • 调色板
存储方案
  • 整理物品
  • 潜影盒储存
  • 矿车储存
  • 物品运输
附魔与烧炼
  • 附魔台机制
  • 铁砧机制
  • 自动化烧炼
  • 燃料选择
破坏方块
  • 爆炸室
  • 凋灵笼
挑战
  • 获得潮涌核心
  • 冒险模式生存
  • 挑战自定义地图
  • 制作自定义地图
  • 治愈僵尸村民
  • 征服神殿和神庙
  • 触发及战胜袭击
  • 征服掠夺者前哨站
  • 征服堡垒遗迹
  • 征服林地府邸
  • 征服海底神殿
  • 打败末影龙
  • 征服末地城
  • 打败凋灵
  • 极限模式
  • 超极限模式
  • 在一个地区中长期生存下去
  • 在无限沙漠中生存
  • 超平坦世界生存[仅Java版]
  • 岛屿生存
  • 空岛生存
  • 速通
  • 猎人游戏
  • 放牧心得
  • 探索深暗之域和远古城市
  • 愚人节版本生存
    • 22w13oneBlockAtATime
农场
方块和物品
  • 骨粉
  • 仙人掌
  • 圆石或石头
  • 可可豆
  • 农作物(甜菜、胡萝卜、马铃薯和小麦)
  • 紫颂果
  • 鸡蛋
  • 蛙明灯
  • 蜂蜜
  • 花朵
  • 海带
    • 零刻作物催熟技术
  • 蘑菇
  • 唱片
  • 下界疣
  • 黑曜石
  • 西瓜、南瓜
  • 鳞甲
  • 羊毛
  • 海泡菜
  • 甘蔗
  • 树木
  • 藤蔓
  • 药水
  • 经验
  • 基岩
  • 方块和物品复制
  • 铁轨复制机[仅Java版]
  • TNT复制[仅Java版]
生物
  • 刷怪塔
  • 怪物磨床
  • 刷怪笼陷阱
  • 动物(猪、牛、羊)
  • 烈焰人
  • 洞穴蜘蛛
  • 闪电苦力怕
  • 溺尸/僵尸
  • 末影人
  • 守卫者
  • 铁傀儡
  • 岩浆怪
  • 以物易物
  • 袭击
    • 无限触发袭击
  • 潜影贝
  • 史莱姆
  • 鱿鱼
  • 海龟
  • 村民
  • 女巫
  • 流浪商人
  • 凋灵骷髅
  • 僵尸猪灵
红石
基础红石
  • 基本逻辑门
  • 高频电路
  • 计时器
  • 通用物品分类器
  • 抽奖箱
  • 飞行器
  • 漏斗
  • 机械
  • 侦测器稳定器
  • 密码锁
  • 随机发生器
  • 红石机械
  • 红石音乐
  • 红石技巧
  • 鲁布·戈德堡机械
  • 村民交易所
探测器
  • 方块更新感应器
  • 比较器更新感应器
  • 阳光探测器
  • 昼夜探测器
矿车
  • 火车站
  • 矿车
    • 储存
    • 存储系统
陷阱
  • 雪傀儡防御炮
  • TNT大炮
  • 活板门利用
  • 陷阱设计
  • 陷阱
活塞
  • 活塞使用
  • 活塞电路
  • 半连接性
  • 零刻活塞
  • 无延迟中继器
  • 无头活塞
高级红石
  • 高级红石电路
  • 算术逻辑
  • 计算器
  • 时钟
  • 摩斯密码
  • 打印机
  • 红石计算机
  • 红石电报机
服务器
使用服务器
  • 在服务器上游玩
  • 服务器监狱
  • 防止恶意破坏
  • 服务器商店
  • 起床战争
  • 空岛战争
架设服务器
  • 架设服务器
    • 架设基岩版服务器
  • 服务器架设脚本
  • 服务器启动脚本
  • FreeBSD启动脚本
  • OpenBSD启动脚本
  • Ubuntu启动脚本
  • WebSocket服务器[仅基岩版]
  • 架设Mod服务器[仅Java版]
  • 架设Hamachi服务器
  • 架设Spigot服务器
  • 虚拟硬盘服务器
  • 使用ngrok搭建服务器
  • 架设ZeroTier服务器
技术性
  • 结构方块
  • 命令方块
  • 命令统计值
  • 使用命令操控实体
  • 提高帧率
  • Minecraft帮助FAQ(IRC频道)
  • NBT与JSON
  • Minecraft URL Scheme[仅基岩版]
  • 更新Java
  • 运行数据生成器
地图
  • 自定义地图
  • 下载地图
  • 生成下落的方块[仅Java版]
  • 使用MCEdit在1.13中刷新旧版海洋[仅Java版]
  • 强制打开存档[仅Java版]
资源包
  • 制作资源包
  • 加载资源包
  • 声音目录
数据包
  • 制作数据包
    • 实例:蜜蜂助手
    • 消除视线
  • 安装数据包
  • 自定义世界生成
附加包
  • 基岩版开发指南
  • 制作资源附加包
    • 高级
    • 基岩版实体文档
    • 修改实体模型
  • 制作行为包
  • 自定义实体
制作游戏视频
  • 视频
游戏安装
  • 快照版本安装
  • 获取崩溃报告
  • 在U盘中使用旧版启动器运行及保存Minecraft
  • 恢复损坏的地图数据
  • 在Google Drive上运行Minecraft
  • 将游戏数据保存到Dropbox云端(仅限地图数据)
  • 将游戏数据保存到Dropbox云端
  • 在Chrome OS上游玩Minecraft
仅Java版
  • 修复Apache Log4j2漏洞
  • 自定义命令触发
  • 原始JSON文本
  • NBT命令标签
  • 编写启动器
    • 版本清单文件下载
    • 版本json文件下载
过时教程
  • 建造微型庇护所
  • 自定义纹理包
  • 基于门的铁傀儡陷阱
  • 到达边境之地
  • 获取崩溃报告(旧版)
  • 人工湖
  • 矿车加速器
  • 中继器重启系统
  • 无数据包生存
  • 升级LWJGL
  • 更新Minecraft
  • 村庄链
  • 水梯
  • 水道
  • 游戏直播
教程
  • 新手手册
  • 高难度通关配装总结
  • 成就指南
  • 高塔指南

网页标题:创新互联MinecraftWiki教程:加法器[]
标题网址:http://www.shufengxianlan.com/qtweb/news17/23967.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联