小弟初学C#,看到书上有这么一段,用&运算符测试某位是0还是1ushort n;
n=0x17ff;
if(n&0x8000==0)
    Console.WriteLine("最高位为0");
else
    Console.WriteLine("最高位为1");哪位高人给解释一下这段代码,到底是怎么测试的?0x8000怎么能为0呢?
谢谢,不胜感激。

解决方案 »

  1.   

    0001 0111 1111 1111 (0x17ff)
    &
    1000 0000 0000 0000 (0x8000)
      

  2.   

    按位与,结果当然是0,见2楼...这是计算机基础知识...真不知道现在的IT专业都是怎么教的...而且...if(n&0x8000==0) //是错的,编译都不可能通过...
    -----------
    if ((n & 0x8000) == 0)//应该这样,运算符优先级问题...现在写书的也够不负责的...
      

  3.   

    可是书上写着 ==比&的优先级高,是不是要先看8000==0?
      

  4.   

    6楼的兄弟够细心,呵呵。楼主如果不理解“按位&”,那就理解为“按位乘”吧,一目了然了吧。