我们必须了解的背景<<和>>运营商和他们解决了什么样的问题。所以我可以开始考虑使用它们来解决我未来的问题。
当我看到包含那些运算符的代码/逻辑时。我将开始避免代码/逻辑。我经常在音频或视频处理库中看到它们。
请帮助我摆脱对他们的恐惧。
答案 0 :(得分:1)
这些的一个直接用途是乘以二。过去,左移比左移更快,因此它是一种表演技术(可能是它在视频处理中使用的原因之一)。
我最近开始使用它在我的C#代码中定义标志,以帮助证明它们实际上是位标志:
[Flags]
enum myFlags {
undefined = 0,
smallest = 1,
next_smallest = smallest << 1
}
答案 1 :(得分:1)
Shift操作符在硬件上更有效。它们本质上是专门的乘法和除法 - 在FPGA或ASIC上,乘法和除法都非常昂贵。在某种程度上,使用移位运算符替换程序中的乘法和除法需要一些巧妙的设计决策。
当我看到包含那些运算符的代码/逻辑时。我将开始避免代码/逻辑。我经常在音频或视频处理库中看到它们。
视频和音频处理基本上依赖于二进制数据是可行的。 >>
和<<
可以更自然地查看基础位上的操作。