Skip to content

开始之前

欢迎使用十亿伏特 mod,本文档默认您已熟悉生存战争原版的电路运作规则,且熟练使用大部分电路元件,如果您还未掌握原版电路,建议您学习后再使用本 mod

如果您已经掌握原版电路,请先阅读下面内容,之后可按兴趣随意阅览本文档

十亿伏特 和 十亿伏特 · 扩展的关系与 区别

  • 十亿伏特 mod只提供更大位宽的原版已有元件,及其变体版本,并非常克制地提供了少量有用的基础元件,对于只是想要更大位宽的玩家,可以选择只使用该 mod
    其他 mod 想使用十亿伏特的更大位宽,一般只需要添加该 mod 作为依赖
  • 十亿伏特 · 扩展 mod则是开发者保持原版电路精神,为进一步扩展电路玩法而开发了大量全新元件,大部分元件的使用需要玩家对二进制表示法有较深的理解,本文档含该 mod
    需要十亿伏特 mod作为前置,不能单独使用

十亿伏特 · 扩展 mod外,当前还有数个前置包含十亿伏特 mod的 mod,可前往 依赖者清单 查看

支持的生存战争API版本

暂时还没有稳定版支持最新版本的本 mod,你需要自行从 SurvivalCraft-UniAPI源码 构建,或者下载其他人构建的

本 mod 1.0 版本支持的 API 版本为 1.53,在新版本API可能出现无法保存存储器数据等问题,可从 此处下载

32 位位宽的意义

十亿伏特和原版电路最大的区别是电压位宽,原版有 4 位共 16 个电压级别(0 ~ 1.5V),十亿伏特有 32 位共 232 个(0\ ~ 232-1V)

什么是位宽?

4 车道的公路,一次只能通过 4 辆车,而 32 车道的公路,一次能通过 32 辆车

对于电路而言也是同理,原版一次只能传输 4 个开关量,而十亿伏特可以一次传输 32 个开关量,这里的多少个开关量,就是多少个二进制数 0 或 1,或者叫做多少个二进制位,简称多少位。

一个标准的电路板有 5 个端口,原版电路板的最大位宽为 20 位,而十亿伏特的有 160 位

表示正整数

  • 1 位的位宽只能表示 0 或 1
  • 2 位的位宽可以表示0、1、2、3
开关开 1关 0
开 1二进制 11
十进制 3
二进制 10
十进制 2
关 0二进制 01
十进制 1
二进制 00
十进制 0
  • 3 位可以表示0 ~ 8
    • 如果从右往左第 1 位为 1,则 + 1(20),否则 + 0(下同)
    • 如果第 2 位为 1,则 + 2(21
    • 如果第 3 位为 1,则 + 4(22
  • 以此类推,如果第 m 位为 1,则 + 2m-1
    n 位位宽可以表示 0 ~ 2n-1 的正整数

📝 第 n 位、最低位、最高位

本文档的第n位将默认是对于原始二进制数,从右往左,从 1 开始数的
最低位即最右边的第 1 位,最高位即最左边的那位

💡 关于进制的表示

本文档如果没有特别标明,默认进制为十进制
如果数字前面写有 0x,则代表这个数是十六进制数

表示负数

我们可以让最高的第n位不表示 + 2n-1,转而表示 * ( -1 ),这里用3位来举例

进制
原始二进制000001010011100101110111
十进制0123-0-1-2-3
这里的第3位即这个数的符号位

📝 说明

这是负数在二进制表示中的原码模式,也是十亿伏特主要采用的负数表示模式,除此之外还有反码、补码,可自行了解

💡 提示

表格过长不能完整查看?请尝试左右拖动,或横屏查看

表示小数

表示正整数 中提到

如果第 m 位为 1,则 + 2m-1

我们把它稍加改变,在 -1 的后面再减 1 个 i,现在让我们来试验一下效果,以总位数为 4,i 为 2 为例:

  • 如果从右往左数第 m 位为 1,则
+2m1i=+12m+1+2=+123m=+2m3
  • 部分表:
原始二进制十进制
00000
00011231=14=0.25
00101232=24=0.5
00111231+1232=14+24=34=0.75
…………
10011231+243=14+2=214=2.25
…………

可见,我们实现了一个小数点在第 2、3 位之间的二进制小数表示法

📝 说明

这是小数的在二进制表示中的定点模式,也是十亿伏特主要采用的小数表示模式,除此之外还有浮点数,可自行了解

组合表示

如果仅是4位位宽,能够表示的数真的很少,但到了32位,不仅可以随心所欲地使用各种数字表示模式,还能在一个端口组合使用多种模式,例如:

第 n 位第16位第 4 ~ 15 位/第 1 ~ 3位
作用符号位整数位,共12位小数点小数位,共3位

即可表现一个精度为

121+1+3=18=0.125

范围为

±((2121)+(1123))=±(4096+0.875)=±4096.875

的数

小结

在十亿伏特,当使用 31 位来作为 存储器 的索引,可以整整存储 21亿4748万3648 个 32 位数,总容量为 922亿亿3372万亿0368亿5477万5808 位,是原版的 2251万亿7998亿1368万5247 倍,如果全部存满,你需要拥有 1152.9PiB 内存

通过组合使用多种二进制表示模式,十亿伏特的 复杂活塞 可以通过电压控制其延伸长度、推拉个数(最大 256 格)等参数,大规模使用时不再需要手动打开对话框调整;告示牌 甚至可以通过5个端口接收10组参数,实现了悬浮显示文字、从指定存储器读取字符串的功能……

总之,位宽的提升不仅带来了数据传输效率的提升,还给电路板功能带来了全新可能,具体区别详见 原版的变体

📝 说明

十亿伏特存储器使用 PNG 格式存储数据,其内部索引的数据类型是 32 位 int,其符号位未使用,导致十亿伏特的存储器的最大索引也是 31 位

如果我不喜欢……

如果你不喜欢或无法理解十亿伏特的修改版,本 mod 为修改较大的元件提供了相应的经典版,它们与原版使用方法和效果完全相同

对于没有经典版的元件,你只需要专注于它较低的4位,即可实现与原版一致的效果

再退一步,本 mod 还提供了变压器,可以将十亿伏特电压转换为原版电压,即可操作原版元件,也可以反过来

反馈渠道

如果你遇到任何 bug 或不懂的,或想提出修改建议,可通过以下渠道反馈