Как умножить или разделить на 2 наиболее эффективно?
Ответ:
[Вернуться в категорию "Вопросы и ответы по программированию на C для микроконтроллеров PIC."] Для умножения на 2 можно использовать операцию сдвига: x = x << 1 или x <<= 1. Второй вариант короче (в написании, но не в генерируемом коде!). Если x = 2, или 0v10 в двоичном виде, сдвиг влево даст 0b100 или 4. Для умножения на 4, используйте выражение x <<= 2, для умножения на 8 - x <<= 3. Для деления на 2 направление сдвига надо поменять: x = x >> 1, или x >>= 1. Деление на четыре выглядит так: x >>= 2. В дополнение, многие компиляторы в процессе оптимизации заменяют процедуру деления на процедуру сдвига, что значительно короче по размеру кода. Примечание: операции сдвига можно применять только с целыми. Не пытайтесь это сделать с float или double, компилятор будет недоволен![Вопросы и ответы по программированию на C для микроконтроллеров PIC.]
|