c#中的>>运算符是什么

San*_*ndy 2 c# colors operators c#-4.0

我相信这必须和黄油一样甜美.但我无法得到它甚至找不到它.

它与.net中的颜色有关.我从互联网上获取了一些示例代码并试图理解它.它需要一个uInt作为参数,做一些恢复a,r,gb字节值.方法如下:

private Color UIntToColor(uint color)
{
    byte a = (byte)(color >> 24);
    byte r = (byte)(color >> 16);
    byte g = (byte)(color >> 8);
    byte b = (byte)(color >> 0);
    return Color.FromArgb(a, r, g, b);
}
Run Code Online (Sandbox Code Playgroud)

那么>>这里是什么 例如,

color = 4278190335 // (blue color)
Run Code Online (Sandbox Code Playgroud)

经过处理

a = 255
r = 0
g = 0
b = 255
Run Code Online (Sandbox Code Playgroud)

所以有人能帮我理解这个吗?

Mat*_*and 5

它在文档中

就在这儿

所以,如果你将4278190335的值转换为十六进制(因为它更容易看到发生了什么)你会得到0xFF0000FF

所以这一行:

byte a = (byte)(color >> 24);
Run Code Online (Sandbox Code Playgroud)

将向右移位0xFF0000FF 24位给你0x000000FF.如果将其转换为一个字节,则将截断最高有效位并以0xFF或255结束.

所以你应该能够弄清楚其他3行的作用.


Nik*_*sev 5

这是右移运营商.

基本上,它的作用是将第一个操作数的所有位都移到右边.第二个操作数指定"远"是如何移位的.例如:

uint value = 240; // this can be represented as 11110000
uint shift2 = value >> 2; // shift2 now equals 00111100
uint shift4 = value >> 4; // shift4 now equals 00001111
Run Code Online (Sandbox Code Playgroud)

关于这个问题的好文章就在这里.