c# - 运算符 "<<"在 C# 中是什么意思?

标签 c# operators

我正在使用 NAudio 包在 C# 中进行一些基本的音频编程,我遇到了以下表达式,但我不知道它是什么意思,因为我以前从未见过 << 运算符被使用过。那么 << 是什么意思?

请快速解释一下这个表达式。

short sample = (short)((buffer[index + 1] << 8) | buffer[index + 0]);

最佳答案

定义

The left-shift operator (<<) shifts its first operand left by the number of bits specified by its second operand. The type of the second operand must be an int. << Operator (MSDN C# Reference) alt text

对于二进制数,它是一种按位运算,将其操作数的所有位都移位;将操作数中的每一位简单地移动给定数量的位位置,并填充空位位置。

用法

算术移位可用作执行有符号整数乘以或除以 2 的幂的有效方法。在有符号或无符号二进制数上左移 n 位具有将其乘以 2n 的效果。在二进制补码有符号二进制数上右移 n 位具有将其除以 2n 的效果,但它总是向下舍入(朝向负无穷大)。这不同于通常在有符号整数除法(向 0 舍入)中完成的舍入方式。这种差异导致不止一个编译器出现错误。

另一种用法是使用颜色位。 Charles Petzold 基金会 article "Bitmaps And Pixel Bits"显示 << 使用颜色时的示例:

ushort pixel = (ushort)(green << 5 | blue);

关于c# - 运算符 "<<"在 C# 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2007526/

相关文章:

c# - 从列表中删除重复值的最佳算法

postgresql - ~~ Postgres 中的运算符

C# LuaInterface 类运算符

c++ - #在c++中定义一个特殊的运算符

delphi - delphi 有一些 "fast"运算符吗? (+=,-=,...)

syntax - 为什么 Prolog 使用 =< 而不是像大多数语言那样使用 <=?

c# - AppDomain.CurrentDomain.UnhandledException 的异步事件处理程序的解决方法

c# - 有没有办法让 C# 不提示实际上没有未初始化的未初始化变量?

c# - 使用C#在ASP.NET中的YouTube视频播放器

c# - C# 中的条件线程锁