在工程中找到这样一个位运算的bug:
realday=(day>>4)*10+day&0x0f;
这么写是不对的,一个很简单的BCD码转换就这么错了。
它会先将10位的码乘以10,在加上原来的day,这个和再去与0x0f与,所以结果错误。
应改成:
realday=(day>>4)*10+(day&0x0f);
就对了。
在工程中找到这样一个位运算的bug:
realday=(day>>4)*10+day&0x0f;
这么写是不对的,一个很简单的BCD码转换就这么错了。
它会先将10位的码乘以10,在加上原来的day,这个和再去与0x0f与,所以结果错误。
应改成:
realday=(day>>4)*10+(day&0x0f);
就对了。