【问题标题】:Importance of Bit-manipulation code?位操作代码的重要性?
【发布时间】:2011-10-27 14:36:36
【问题描述】:

过去 3 年我一直在编程,并没有真正投入精力编写位操作代码。在从事企业软件工作后,我也没有见过其他开发人员编写它。

编写位操作代码而不是使用数学运算来执行计算是一种好习惯吗?

【问题讨论】:

    标签: bit-manipulation


    【解决方案1】:

    或多或少,如果您使用的不是可以从位操作中受益的软件,那么您可能不需要使用它们。事实上,在很多地方,它们会使代码更难阅读,除非有理由,否则真的不应该使用它们。

    但是,如果您有兴趣,只要应用正确,它们就是一个有用的工具。例如,如果您的代码乘以 2 的幂,则左移位会更快。如果您确定乘法代码是性能的瓶颈,这将变得很重要。

    要认识到的一个重要事实是,一些编译器会为您执行其中一些形式的优化(例如,将行 i = i * 2 转换为左移)。

    【讨论】:

      【解决方案2】:

      这是一个有点奇怪的问题!不,企业代码可能永远不可能进行位操作。它通常是用 Java/.NET 等编写的,主要用于推送消息并在各个系统之间进行高级别的通信。

      但是,如果您使用 C 或 C++ 或汇编程序编写驱动程序,或者进行巧妙的低级数学运算,那么位操作可能对您更重要和有用。毫无疑问,如果/何时到来,您将知道何时使用它!

      【讨论】:

        【解决方案3】:

        这取决于具体情况。例如右移和左移操作通常比除法运算符快。如果您需要优化并且位操作比其他方法更快,您应该使用位操作。但不要过早优化。因为那不是一件好事。如果您确定需要优化并且使用位运算符比以前的方法更快,那么是的,您应该使用它们。

        【讨论】:

        • 但是编译器通常会为你做这件事。
        • 一般建议不好。编译器通常知道更好的除法/乘法技巧,包括单次移位不起作用的那种。
        【解决方案4】:

        TL;DR:不。使用数学运算符进行数学运算。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-10-02
          • 2021-07-17
          • 1970-01-01
          • 1970-01-01
          • 2010-11-06
          • 2021-03-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多