【问题标题】:What does the ">>=" operator mean in C#?C# 中的“>>=”运算符是什么意思?
【发布时间】:2013-06-03 00:43:36
【问题描述】:

我刚刚遇到以下代码,我可以看到 num 每个循环减少一半,但我无法真正弄清楚这意味着什么。

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

谢谢。

【问题讨论】:

  • 谷歌搜索你的问题的标题会产生一些非常有希望的结果。在发布问题之前,您是否尝试过调查此问题?
  • 是的,我做到了。也许你可以给我看一个谷歌结果??谢谢
  • C# Operators 是我进行搜索时的第二个结果。
  • 因为您的搜索关键字与其他运营商的信息有很多重叠。删除一些无用的关键字并仅搜索“C# operator >>=”会有所帮助,或者甚至只是搜索“C# operator”以查找所有这些关键字的列表并从那里进入站点。至于为什么其他人比“运算符>>=”拥有更多的谷歌果汁,主要是因为它的使用(因此搜索)少于大多数其他运算符。
  • 搜索“C#规范”,然后搜索规范也是自己解决此问题的有效方法。

标签: c# operators


【解决方案1】:

将值向右移位的是运算符。在您的代码中,num 将具有以下序列:

16 //10000 二进制

8 //01000

4 //00100

2 //00010

1 //00001

【讨论】:

    【解决方案2】:

    这意味着右移 1 并赋值,16 是 10000 二进制,每次调用该代码时,该数字基本上都会除以 2。10000 (16) 变为 01000 (8)

    【讨论】:

      【解决方案3】:

      【讨论】:

        【解决方案4】:

        它表示'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
        

        【讨论】:

          【解决方案5】:

          右移赋值运算符:

          num >>= 1num = num >> 1 相同

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

          【讨论】:

            猜你喜欢
            • 2010-09-15
            • 2012-03-03
            • 2011-05-12
            • 2011-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-05-07
            • 2011-12-11
            相关资源
            最近更新 更多