Which is better option to use for dividing an integer number by 2?
c, c++, division, micro-optimization, optimization
Solution
Use the operation that best describes what you are trying to do.
- If you are treating the number as a sequence of bits, use bitshift.
- If you are treating it as a numerical value, use division.
Note that they are not exactly equivalent. They can give different results for negative integers. For example:
-5 / 2 = -2
-5 >> 1 = -3
(ideone)
Problem
Which of the following techniques is the best option for dividing an integer by 2 and why? Technique 1: ``` x = x >> 1; ``` Technique 2: ``` x = x / 2; ``` Here `x` is an integer.
Related problems
- Is shifting bits faster than multiplying and dividing in Java? .NET?
- Does a c/c++ compiler optimize constant divisions by power-of-two value into shifts?
- Is multiplication and division using shift operators in C actually faster?
- Would you use num%2 or num&1 to check if a number is even?
- Which compiles to faster code: "n * 3" or "n+(n*2)"?