我一直都以為c中除以2的n次方可以使用右移n位代替,然而在實際調試中發現並不都是這樣的。是在計算餘數是發現了異常 被除數:114325068 右移15計算結果:3488 除法取整計算結果:3489 右移操作計算餘數:33772 除法取整計算餘數:1005 顯然:這是不一樣的。 移位操作是一條cpu指 ...
我一直都以為c中除以2的n次方可以使用右移n位代替,然而在實際調試中發現並不都是這樣的。是在計算餘數是發現了異常
被除數:114325068
右移15計算結果:3488
除法取整計算結果:3489
右移操作計算餘數:33772
除法取整計算餘數:1005
顯然:這是不一樣的。
移位操作是一條cpu指令,顯然是比除法操作快的,特別是在Cortex-M0內核的處理器上是沒有硬體除法器的;但實際編程中還是謹慎使用移位操作代替除法運算。