2013-06-06 6 views
-6

Я натолкнулся на следующий код, и я вижу, что num уменьшается на половину каждого цикла, но я не могу искренне понять, что это значит.Что означает оператор «>> =» в C#?

int n1 = n; 
for (int num = 16; num != 0; num >>= 1) 
{ 
    if ((n1 & num) != 0) 
    { 
     dOSomeStuff(); 
    } 
} 

Спасибо.

+4

Популяция названия вашего вопроса дает некоторые довольно многообещающие результаты. Вы вообще пытались изучить этот вопрос, прежде чем публиковать вопрос? – Servy

+0

Да, я это сделал. Может быть, вы могли бы показать мне результат Google? Спасибо – rtuner

+2

[C# Operators] (http://msdn.microsoft.com/en-us/library/6a71f45d (v = vs.80) .aspx) был вторым результатом, когда я выполнил поиск. – Servy

ответ

1

Это означает 'right-shift-and-assign', по той же схеме, как += означает 'надстройку и-правопреемником', -= означает " вычесть и назначить "и т. д.

Например:

int i = 123; // i = 123 binary 01111011 
i >>= 1;  // i = 61 binary 00111101 
i >>= 1;  // i = 30 binary 00011110 
i >>= 1;  // i = 15 binary 00001111 
0

это означает сдвиг вправо на 1 и присвоить, 16 10000 двоичная, каждый раз, когда вы называете этот кусок кода число будет по существу делится на 2. 10000 (16) становится 01000 (8)

0

Это оператор, который бит сдвигает значение вправо. В коде, Num будет иметь следующую последовательность:

16 // 10000 в двоичной

8 // 01000

4 // 00100

2 // 00010

1 // 00001

Смежные вопросы