标题: 关于1302日期BCD处理的代码问题 [打印本页]

作者: 泳馨    时间: 2020-3-20 14:47
标题: 关于1302日期BCD处理的代码问题
if(month%16==10)
                                    month=(month/16)*16+16;
是什么意思怎么解释?


作者: adject    时间: 2020-3-20 14:47
if(month%16==10)  //判断月份是否大于9月
                                     month=(month/16)*16+16; //把月份转成BCD码
BCD码0xab      a为10进制的 10位数  b是个位是  
也可以这样写
month= (month/10)>>4 + month%10
作者: carpcarey    时间: 2020-3-20 19:12
if(month%16==10)    month=(month/16)*16+16;
等效
if(month&0x0f==0x0a)    month=(month&0xf0)+0x10;
也就是说,在月份加一后(此时是16进制的加1),判断是否不符合BCD码的格式,不符合就要调整,要在BCD码的十位上加1。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1