【问题标题】:Real Application of left shift << and right shift >> operators左移<<和右移>>运算符的实际应用
【发布时间】:2017-09-08 20:24:44
【问题描述】:

> 运算符我们必须了解哪些背景以及它们解决了什么样的问题。所以我可以开始考虑使用它们来解决我未来的问题。

每当我看到包含这些运算符的代码/逻辑时。我将开始避免代码/逻辑。我主要在音频或视频处理库中看到它们。

请帮助我摆脱对他们的恐惧。

【问题讨论】:

    标签: logic operators programming-languages


    【解决方案1】:

    这些的一个直接用途是乘以二。过去,左移比乘以 2 更快,因此它是一种性能技术(可能是它用于视频处理的原因之一)。

    我最近开始使用它在我的 C# 代码中定义标志,以帮助表明它们实际上是位标志:

    [Flags]
    enum myFlags {
      undefined = 0,
      smallest = 1,
      next_smallest = smallest << 1
    }
    

    【讨论】:

    • 那个时候,number
    • 其实因为1
    【解决方案2】:

    移位运算符在硬件上更有效。它们本质上是专门的乘法和除法——在 FPGA 或 ASIC 上,乘法和除法都非常昂贵。在某种程度上,使用移位运算符来代替程序中的乘法和除法将需要一些巧妙的设计决策。

    每当我看到包含这些运算符的代码/逻辑时。我将开始避免代码/逻辑。我主要在音频或视频处理库中看到它们。

    视频和音频处理基本上依赖二进制数据才可行。 &gt;&gt;&lt;&lt; 可以更自然地查看对底层位的操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-02
      • 2013-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多