Что такое >> оператор в c # - PullRequest
2 голосов
/ 24 марта 2012

Я уверен, что оно должно быть таким же сладким и простым, как масло.Но я не могу получить или даже найти его.

Это связано с цветами в .net.Я взял пример кода из Интернета и пытаюсь понять это.Он принимает uInt в качестве аргумента и делает что-то, чтобы вернуть a, r, g и b байтовые значения.Метод выглядит так:

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 ]

5 голосов
/ 24 марта 2012

Это в документах

Прямо здесь

Итак, если вы преобразуете свое значение 4278190335 в гекс (потому что его легче увидетьчто происходит) вы получаете 0xFF0000FF

Итак, эта строка:

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

сместит 0xFF0000FF на 24 бита вправо, чтобы получить 0x000000FF.Если вы приведете это к байту, вы урежете самые значимые биты и получите 0xFF или 255.

Таким образом, вы сможете понять, что делают остальные 3 строки.

5 голосов
/ 24 марта 2012

Это оператор смещения вправо.

По сути, он смещает все биты первого операнда вправо.Второй операнд указывает, насколько "далеко" сдвинуты биты.Например:

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

Хорошая статья на эту тему: здесь .

4 голосов
/ 24 марта 2012

>> - оператор сдвига вправо.

...