首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

linux内核中的宏定义不懂,该怎么解决

2012-10-18 
linux内核中的宏定义不懂一个main.c下的一个宏定义 把BCD转换成二进制#define BCD_TO_BIT(val) ((val) (

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码

热点排行