close
最近在寫PID的控制,需要用到一些乘除的運算,
在Microchip MCU中的乘,例如說a*100,其實是a加100次,
會多很多程式碼,還要擔心是不是會超出變數的容量,
例如a是宣告unsigned char也就是0~255,
a*100就會超過資料的容量,
如果a是int (16位元)騎時在做乘除運算時需要更多的資料空間與程式碼,
程式碼一多,當然執行的時間也就變長了,在資源有限的MCU中會造成許多的浪費。
一般要節省運算的程式碼與執行時間,會用左移(<<)或右移(>>),
a<<1代表a*2, a<<2代表a*2^2,以此類推.......
相對的a>>1代表a/2,a>>2代表a/(2^2),以此類推......
也就是說不管是乘除就最好用2的次方,這是一些小小的技巧,
唯一要注意的是如果你的變數會有負數,就不要用左移和右移的方式,
因為左移與右怡並不會判斷附號並做處理,會造成資料運算後的錯誤,
一些小心得與大家分享 ^^
文章標籤
全站熱搜