【发布时间】:2011-10-27 14:36:36
【问题描述】:
过去 3 年我一直在编程,并没有真正投入精力编写位操作代码。在从事企业软件工作后,我也没有见过其他开发人员编写它。
编写位操作代码而不是使用数学运算来执行计算是一种好习惯吗?
【问题讨论】:
标签: bit-manipulation
过去 3 年我一直在编程,并没有真正投入精力编写位操作代码。在从事企业软件工作后,我也没有见过其他开发人员编写它。
编写位操作代码而不是使用数学运算来执行计算是一种好习惯吗?
【问题讨论】:
标签: bit-manipulation
或多或少,如果您使用的不是可以从位操作中受益的软件,那么您可能不需要使用它们。事实上,在很多地方,它们会使代码更难阅读,除非有理由,否则真的不应该使用它们。
但是,如果您有兴趣,只要应用正确,它们就是一个有用的工具。例如,如果您的代码乘以 2 的幂,则左移位会更快。如果您确定乘法代码是性能的瓶颈,这将变得很重要。
要认识到的一个重要事实是,一些编译器会为您执行其中一些形式的优化(例如,将行 i = i * 2 转换为左移)。
【讨论】:
这是一个有点奇怪的问题!不,企业代码可能永远不可能进行位操作。它通常是用 Java/.NET 等编写的,主要用于推送消息并在各个系统之间进行高级别的通信。
但是,如果您使用 C 或 C++ 或汇编程序编写驱动程序,或者进行巧妙的低级数学运算,那么位操作可能对您更重要和有用。毫无疑问,如果/何时到来,您将知道何时使用它!
【讨论】:
这取决于具体情况。例如右移和左移操作通常比除法运算符快。如果您需要优化并且位操作比其他方法更快,您应该使用位操作。但不要过早优化。因为那不是一件好事。如果您确定需要优化并且使用位运算符比以前的方法更快,那么是的,您应该使用它们。
【讨论】:
TL;DR:不。使用数学运算符进行数学运算。
【讨论】: