Важность кода бит-манипуляции? - PullRequest
2 голосов
/ 27 октября 2011

Я программировал последние 3 года и не прикладывал усилий для написания кода для манипулирования битами. Работая над корпоративным программным обеспечением, я не видел, чтобы другие разработчики писали это тоже.

Полезно ли писать битовый код манипуляции вместо использования математических операций для выполнения вычислений?

Ответы [ 4 ]

3 голосов
/ 27 октября 2011

Более или менее, если вы не работаете с программным обеспечением, которое выиграет от битовых манипуляций, то вам, вероятно, не нужно их использовать.На самом деле, во многих местах они могут усложнить чтение кода, и их не следует использовать, если только для этого нет причин.

Однако, если вам интересно, они являются полезным инструментом, если имприложение.Например, если у вас есть код, который умножается на степень два, можно быстрее сдвинуть биты влево.Это может стать важным, если вы определите, что код умножения является узким местом для производительности.

Один важный факт, который нужно понимать, заключается в том, что некоторые компиляторы будут выполнять некоторые из этих форм оптимизации (например, превращая строку i = i * 2 вСдвиг влево) для вас.

1 голос
/ 27 октября 2011

TL; DR: Нет. Используйте математические операторы для математических операций.

1 голос
/ 27 октября 2011

Это зависит от ситуации. Например, операции смещения вправо и влево обычно выполняются быстрее, чем оператор деления. Если вам нужна оптимизация и битовые операции выполняются быстрее, чем другой подход, вам следует использовать битовые операции. Но не оптимизируйте преждевременно. потому что это не очень хорошая вещь. Если вы уверены, что нуждаетесь в оптимизации и используете битовые операторы быстрее, чем предыдущий подход, тогда да, вы должны их использовать.

1 голос
/ 27 октября 2011

Это немного странный вопрос!Нет, корпоративный код, вероятно, никогда не будет выполнять битовые манипуляции.Обычно он написан на Java / .NET и т. Д. И касается передачи сообщений и обмена данными между различными системами на высоком уровне.

Если, однако, вы пишете драйверы с использованием C или C ++ или ассемблера, или делаете умный низкий уровеньматематика, то битовые манипуляции, вероятно, более важны и полезны для вас.Без сомнения, вы будете знать, когда его использовать, если / когда придет время!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...