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

时间:2012-03-23 20:06:46

标签: c# c#-4.0 colors operators

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

它与.net中的颜色有关。我从互联网上获取了一些示例代码并试图理解它。它需要uInt作为参数,并执行一些操作以返回argb字节值。方法如下:

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);
}

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

color = 4278190335 // (blue color)

处理后

a = 255
r = 0
g = 0
b = 255

那么有人能帮助我理解这个吗?

3 个答案:

答案 0 :(得分:5)

It's in the docs

Right here

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

所以这一行:

byte a = (byte)(color >> 24);

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

所以你应该能够弄清楚其他3行是做什么的。

答案 1 :(得分: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

关于这个问题的好文章是here

答案 2 :(得分:4)

>>是右移操作员。