左移的实际应用<<和右移>>运营商

时间:2017-09-08 20:24:45

标签: logic operators programming-languages

我们必须了解的背景<<和>>运营商和他们解决了什么样的问题。所以我可以开始考虑使用它们来解决我未来的问题。

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

  

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

视频和音频处理基本上依赖于二进制数据是可行的。 >><<可以更自然地查看基础位上的操作。