今天FPGA的同事问我C语言中十进制转8421BCD码是用的什么方法?
第一时间我在想除了除10取余还能有什么办法?
过了一会儿,突然想起有没有办法从移位上解决这个问题呢?
于是乎就看到这个链接。
然后就用C语言实现了一下,代码如下(谁有兴趣话看看是取余计算快呢还是下面这种快,测完记得评论一下,谢谢):
#include
unsigned int dec_to_bcd(unsigned int dec)
{
unsigned long int i = 0;
unsigned char c[8];
int cnt = 0;
int cnt4 = 0;
for (cnt=sizeof(dec)*8; cnt!=0; cnt--)
{
i (cnt - 1)) & 1);
if (cnt == 1)
break;
for (cnt4=0; cnt4> (cnt4 * 4)) & 0x0F;
c[cnt4] = c[cnt4] > 4 ? c[cnt4] + 3 : c[cnt4];
}
i = 0;
for (cnt4=0; cnt4
|