我的世界二进制转换BCD码的规则是什么呢?这是很多高玩必须掌握的东西,可能很多童鞋对BCD码并不熟悉,但大都数玩家都应该听说过二进制,这之间的转换在游戏中是非常重要的。九游小编带来了二进制转换BCD码...

我的世界二进制转换BCD码的规则是什么呢?这是很多高玩必须掌握的东西,可能很多童鞋对BCD码并不熟悉,但大都数玩家都应该听说过二进制,这之间的转换在游戏中是非常重要的。九游小编带来了二进制转换BCD码的方法,一起来看看下文吧!

我的世界二进制转换BCD码的详细教程

二进制转换BCD码

二进制转换BCD码

什么是BCD码

BCD(二进制编码的十进制)是一种用4位二进制数来表示一个十进制数的方法,一个4位的二进制数可以表示出从0到15的十进制数,但是在BCD中,每4位只能组合出十进制中的0到9。

两个BCD数相加后,结果的4位数可能会出现不合法的值(0到9之外),这时我们得将它们加上6来修正(至于为什么是加6,后文会讲),这种修正被称作为“十进制数调整”(感兴趣的可以去搜索一下“十进制数加调整指令”)。

如何转换成BCD码

二进制转换成BCD码,需要用到Double Dabble算法。

实现方法

拿11111111来举例子,我们先建立一个表格,把二进制数放入右侧的二进制区,然后开始运算。

1. 当二进制区不为空时,将内容左移

2. 然后判断3个BCD区中的值是否大于4

* 若是,则将单个BCD区内的数+3处理

* 否则,不做处理

重复以上两个操作,直到二进制区为空(为空时立即停止操作,不用接着判断BCD区是否大于4)

在游戏中的实现

1.枚举

我们通常是通过“枚举”的方式来实现的,这里说的“枚举”并不是指把所有的结果列出来,而是把+3前后的取值枚举出来

通过将模块错位排列的方式实现移位操作

2.加法器

和上一个方法很相像,不过这里用到并不是枚举模块,而是加法器。同样地,先是判断是否大于4,然后用加法器来代替枚举模块进行+3的操作。

总结在游戏中+3模块的体积总是大于加法器的,常规+3模块最低延时为2Ticks,所以第一种方法是牺牲了空间,换得了较少的延时。而第二种方法是用时间换得了较小体积(当然,加法器的结构不同,运算耗时也不同,这里使用行波进位加法器作为比较对象)。

对于+3模块的优化

我们先看回刚刚的对照表,可以发现表内有4种情况是不用修正的,意味着输入是多少,输出也是多少,如果将这4组数据也放入译码编码的过程,那将会占用不少的时间(因为移位时需要+3的情况是很少的,多数情况都是不需要修正的)。

所以,我们可以对+3模块进行优化,在输入为前4种形式时,不做任何操作,直接把线接到输出那。对于其他情况做+3处理。

如转载涉及版权等问题,请作者与我司联系,我司将在第一时间删除或支付稿酬。