串口初始化程序中有这么一段程序
float temp;
u16 mantissa;
u16 fraction;
temp=(float)(pclk2*1000000)/(bound*16);//得到USARTDIV
mantissa=temp; //得到整数部分
fraction=(temp-mantissa)*16; //得到小数部分
mantissa<<=4;
mantissa+=fraction;
我看了以后总觉得temp先除以16再通过raction=(temp-mantissa)*16;mantissa<<=4;乘以16,不是多次一举吗???
为什么不直接 mantissa=(float)(pclk2*1000000)/bound
请大家解惑! |