浅谈二进制转BCD码(加三移位法)

   二进制转BCD  加三移位法(网上是这么叫的)

1.      为什么不用除法或者取余?

          除法取模占用资源太多。

2.      加三移位法的原理(自己的理解)

   二进制想要转成BCD码,关键就是其转换为十进制后分离其各个位,每一位用4位二进制表示即可。

   如果不转换成十进制如何将其表示为BCD码?

   4位二进制最高表示15      BCD码4位最高表示9

   那么如果4位二进制大于9了就向前进一(加6),不就是BCD码了么

   好多位的二进制用以上算法循环好多次就变成BCD了

 

   至于加三移位法 加了3移位 == 移位后加6  前者占用资源相对少些 

   由于向左移位 所以从高位到低位循环判断

   先判断是否大于等于5 即可判断移位后是否大于等于10

   也可以 先判断是否大于4  即可判断移位后是否大于9

   大于的话就加3使其进一 让其保持在小于等于9(BCD)的状态

   到最后四位的时候无需判断 如果判断就错了 最后四位不会移位了 要判断也是其是否大于9  且前面都判断过了 最后四位一定不会大于9    

    why ?(如果大于9  即前三位至少是大于4的(5,6,7) 但是大于4会加三使其进一(0,1,2)即时加上最后一位也不可能大于9)

 

 

感谢这位博主

http://blog.csdn.net/li200503028/article/details/19507061

例子以上网址里有 或者百度 详细的公式的话可以搜相关论文

你可能感兴趣的:(FPGA)