Search code examples
c++coptimizationdivisionmicro-optimization

Which is better option to use for dividing an integer number by 2?


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.


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)