Difference between revisions of "Embedded Programming Tips and Tricks"
(→Fast Division) |
(→Fast Division) |
||
Line 8: | Line 8: | ||
''X = X >> 4; (Will result in a divide by 16)<br>'' | ''X = X >> 4; (Will result in a divide by 16)<br>'' | ||
− | By adding a multiplication you can achieve a limited number of | + | By adding a multiplication you can achieve a limited number of other divisions.<br> |
For example<br> | For example<br> |
Revision as of 23:02, 12 November 2011
Fast Division
On microcontrollers without a divide instruction very fast division can be done by bit shifting a variable right.
Each shift does a divide by two.
For example
Y = Y >> 1; (Will result in a divide by 2)
or
X = X >> 4; (Will result in a divide by 16)
By adding a multiplication you can achieve a limited number of other divisions.
For example
Z = Z * 3;
Z = Z >> 4; (div 16)
Will result in a division of 5.33 (16/3 = 5.33)
Be sure to do the multiply first, otherwise bits will be lost.
Also be sure the variable size is large enough to store the multiplied value.