【发布时间】:2017-09-08 20:24:44
【问题描述】:
> 运算符我们必须了解哪些背景以及它们解决了什么样的问题。所以我可以开始考虑使用它们来解决我未来的问题。
每当我看到包含这些运算符的代码/逻辑时。我将开始避免代码/逻辑。我主要在音频或视频处理库中看到它们。
请帮助我摆脱对他们的恐惧。
【问题讨论】:
标签: logic operators programming-languages
> 运算符我们必须了解哪些背景以及它们解决了什么样的问题。所以我可以开始考虑使用它们来解决我未来的问题。
每当我看到包含这些运算符的代码/逻辑时。我将开始避免代码/逻辑。我主要在音频或视频处理库中看到它们。
请帮助我摆脱对他们的恐惧。
【问题讨论】:
标签: logic operators programming-languages
这些的一个直接用途是乘以二。过去,左移比乘以 2 更快,因此它是一种性能技术(可能是它用于视频处理的原因之一)。
我最近开始使用它在我的 C# 代码中定义标志,以帮助表明它们实际上是位标志:
[Flags]
enum myFlags {
undefined = 0,
smallest = 1,
next_smallest = smallest << 1
}
【讨论】:
移位运算符在硬件上更有效。它们本质上是专门的乘法和除法——在 FPGA 或 ASIC 上,乘法和除法都非常昂贵。在某种程度上,使用移位运算符来代替程序中的乘法和除法将需要一些巧妙的设计决策。
每当我看到包含这些运算符的代码/逻辑时。我将开始避免代码/逻辑。我主要在音频或视频处理库中看到它们。
视频和音频处理基本上依赖二进制数据才可行。 >> 和 << 可以更自然地查看对底层位的操作。
【讨论】: