原理: 二进制右移几位,就等于除以了2的几次方.
在进行AD采集计算的时候, 会需要使用采集到的AD值, 除以满量程的AD值, 再乘以基准电压的方法来计算采集到的电压值.
以12位ADC为例, 基准电压3.3V, 3300mv, 正常情况下, c语言是这样写的:
uint16_t adVal =0;
uint32_t volt_mv = 0;
volt_mv = (adVal *3300)/4096;
特殊情况下, 也可以利用二进制移位除法的原理, 来写程序:
volt_mv = (adVal *3300)>>12; /*二进制右移12位,即等于舍去小数点的除以2的12次方*/
同理, (adVal *3300)>>8 等价于 (adVal *3300)/256