我正在使用NAudio包在C#中进行一些基本的音频编程,我遇到了以下表达式,我不知道这意味着什么,因为我从未见过之前使用的<<运算符.那么<<是什么意思呢?
请快速解释一下这个表达方式.
short sample = (short)((buffer[index + 1] << 8) | buffer[index + 0]);
Run Code Online (Sandbox Code Playgroud)
ser*_*hio 62
左移运算符(<<)将其第一个操作数左移第二个操作数指定的位数.第二个操作数的类型必须是int. <<运算符(MSDN C#参考)
对于二进制数,它是一个按位运算,它会移动其操作数的所有位; 操作数中的每个位只是移动给定数量的位位置,并填充空位位置.
算术移位可以用作以2的幂执行有符号整数的乘法或除法的有效方式.在有符号或无符号二进制数上向左移位n位会产生乘以2 n的效果.在二进制补码有符号二进制数上向右移位n位具有将其除以2 n的效果,但它总是向下舍入(朝向负无穷大).这与通常在有符号整数除法(向0舍入)中进行舍入的方式不同.这种差异导致了多个编译器中的错误.
另一种用法是使用颜色位.Charles Petzold Foundations的文章"Bitmaps和Pixel Bits"显示了<<使用颜色时的一个例子:
ushort pixel = (ushort)(green << 5 | blue);
Run Code Online (Sandbox Code Playgroud)
左移(和对应,右移)移动给定方向的位.
向左移动或多或少是2倍,但速度更快
右移或多或少除以2,但速度更快
归档时间: |
|
查看次数: |
5949 次 |
最近记录: |