“>> =”运算符在C#中意味着什么?

时间:2013-06-06 20:37:46

标签: c# operators

我刚刚看到以下代码,我看到num每个循环减少了一半,但我不能真诚地弄清楚这意味着什么。

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

感谢。

5 个答案:

答案 0 :(得分:3)

右移分配算子:

num >>= 1num = num >> 1

相同

http://msdn.microsoft.com/en-US/library/23as4533(v=vs.80).aspx

答案 1 :(得分:1)

这意味着'right-shift-and-assign',与+=相同,意味着'添加和分配',-=表示'减去和分配& #39;等。

例如:

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

答案 2 :(得分:0)

答案 3 :(得分:0)

表示向右移动1并且分配,16是10000二进制,每次调用该段代码时,数字基本上除以2. 10000(16)变为01000(8)

答案 4 :(得分:0)

操作员将值向右移位。在您的代码中,num将具有以下序列:

16 // 10000二进制

8 // 01000

4 // 00100

2 // 00010

1 // 00001