2010-06-14 32 views

回答

1

链接到algorithm on wikipedia是相当有帮助的。

BCD是二进制编码的十进制。这意味着它是十六进制的,但只有数字0-9被使用。

该算法会执行一组左移。每个左移一位相当于乘以二。当您将十六进制数字乘以两位数时,如果它是八位或更高位数,它将进位到下一位。对于BCD,如果它是5或更高,就希望它携带,因此它表现得像十进制。

每班之前,每个BCD数字都会被测试。如果它在4以上,则增加3.该数字必须在A之下才是有效的BCD,因此这将不会携带。当转变发生时,3会神奇地消失回BC​​D。

值0,1,2,3,4是显而易见的。乘以两个正义作品。值5,6,7,8,9是棘手的位。他们应该映射到十进制的10,12,14,16,18。在十六进制中,它们映射到A,C,E,10,12,这些都恰好与期望值相差6,即3 * 2,这就是为什么3在数字乘以2之前加上的原因。

由于输入位的左移次数很多,因此所有位都移入输出区域。由于每个BCD码都在每个班次进行测试,因此任何十六进制数字都会被滤除。

相关问题