linux内核中的宏定义不懂
一个main.c下的一个宏定义 把BCD转换成二进制
#define BCD_TO_BIT(val) ((val) = (val)&15 + (val>>4)*10)
这个我真的看不懂 十进制在C语言还能转换成二进制吗?
很困惑 请各位大师帮帮忙啊
小弟拜上
------解决方案--------------------唉 lz去百度下BCD码
这个宏仅仅是把8bits的bcd码转换成一个整数
------解决方案--------------------
正常的整形能直接运算
BCD码不能直接进行运算
例如60这个10十进制数
BCD码是0x60 ,整形是0x3c
如果0x60 直接相加,0x60+0x60=0xc0=192 ,不是正确的120
那么BCD码直接运算就要自己写函数,不但麻烦,还浪费更多的cpu指令
所以要转BCD码