本帖最后由 damiaa 于 2023-10-14 21:10 编辑
0xa8 ==>1010 1000 转换 168
每四位大于4就调整(低4位)+0x3 (高四位) +0x30 可以用第四位和最高位判断
0000 0000 0000 1010 1000
移位
0000 0000 0001 0101 000
不要调整
移位
0000 0000 0010 1010 00
不要调整
移位
0000 0000 0101 0100 0
调整 +0011
0000 0000 1000 0100 0
移位
0000 0001 0000 1000
不要调整
移位
0000 0010 0001 000
移位
0000 0100 0010 00
移位
0000 1000 0100 0
调整 +110000
0000 1011 0100
移位
0001 0110 1000
这个是8为hex转bcd 16位可以相应移位16次,寄存器扩大
算法原理
这个算法应用了逐步移位的方式:
第一步:添加一个24位的移位寄存器用作移位寄存
第二步:二进数逐步左移
将需要转换的十进制数以二进制形式逐步左移。
第三步:大四加三
每左移一位,就要让BCD位去和4比较,如果大于4就加上3,如果不大于就继续左移,然后继续和4比较。
第四步:进数全部移完,得到结果。
|