本帖最后由 719823597 于 2013-3-10 16:05 编辑



上面的就是BINBCD的操作方式,下面我来作一下文字说明
注意,本文把UnitsTensHundreds和他们所处的那一列统称为1,另外Binary和它所在的那一列不算一组,另外,表格该一行一行看

1数据对应一个显示屏(2进制输入的)

2进制数有多少位就把它往左移多少位

3左边的英文是操作,shift是移位,add是加

4 Binary那一列在最后可以省略


[
1.把binary数向左移一位
2.如果UnitsTensHundreds这三组的数据中有大于或等于5的,就把那组数据加31次移位只加1次)
3.如果移位未完成,那就返回步骤1,否则终止操作并输出数据



我们以123为例来演算一遍(我会把组里的数字高亮)

123的二进制数是0111 1011

我们先将其左移1位,得到1111 0110

目前还在binary那列里,所以继续移位

得到0001 1110 1100

组里的数字小于5,继续移

得到0011 1101 1000

继续移位

得到0111 1011 0000

可以看到Units组里的数字已经大于5了,所以把当前该组里的数据+3处理

得到1010 1011 0000

继续移位

得到0001 0101 0110 0000

Units组里的数字等于5,所以再加3

得到0001 1000 0110 0000

继续移位

得到0011 0000 1100 0000

继续移位

得到0110 0001 1000 0000

这次是Tens里的数据大于5了,所以+3处理

得到1001 0001 1000 0000

因为我把2进制数前面补了一个0,所以变成了8位的数据,现在还差最后一次的移位

得到0001 0010 0011 0000 0000

终止操作,输出最终数据

我之前说过,binary那列在最后可以省略,那么结果就是0001 0010 0011了,我也说过1组数据对应12进制显示屏,所以我们分组看,第一组变成十进制数就是1,第二组就是2

第三组就是3

下面是+3模块的真值表

接下来就是成品了