none
b1 |= (byte)(1 << bitIndex); --这段啥意思? RRS feed

答案

  • byte b1 = getByt(); 

    int byteIndex = index / 8;

    b1 |= (byte)(1 << bitIndex);   --这段啥意思?


    1<<bitIndex(把“1”左移bitIndex位,应该是放大到2的bitIndex次方)。

    然后强制转化成byte类型,最后与运算(见1得1,全零即零)。

    这段代码的主要功能是:b1=b1+b1*2^bitIndex

    我做了一个演示程序证明:

    class Program
        {
            static void Main(string[] args)
            {
                //foreach (var item in typeof(S).GetCustomAttributes(true)) ;

                byte b = 1;
                byte s = 1 << 1;    //此时s应该是2
                Console.WriteLine(s);
                b |= s;             //此时b是3 b=1+1*(2^1)=1+2=3
                Console.WriteLine(b);
            }
    }

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处
    2011年11月15日 1:35
  • 真实功能是把bitIndex这位置true。
    • 已标记为答案 a013strife 2011年11月21日 0:56
    2011年11月21日 0:56

全部回复

  • byte b1 = getByt(); 

    int byteIndex = index / 8;

    b1 |= (byte)(1 << bitIndex);   --这段啥意思?


    1<<bitIndex(把“1”左移bitIndex位,应该是放大到2的bitIndex次方)。

    然后强制转化成byte类型,最后与运算(见1得1,全零即零)。

    这段代码的主要功能是:b1=b1+b1*2^bitIndex

    我做了一个演示程序证明:

    class Program
        {
            static void Main(string[] args)
            {
                //foreach (var item in typeof(S).GetCustomAttributes(true)) ;

                byte b = 1;
                byte s = 1 << 1;    //此时s应该是2
                Console.WriteLine(s);
                b |= s;             //此时b是3 b=1+1*(2^1)=1+2=3
                Console.WriteLine(b);
            }
    }

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处
    2011年11月15日 1:35
  • 真实功能是把bitIndex这位置true。
    • 已标记为答案 a013strife 2011年11月21日 0:56
    2011年11月21日 0:56