using System;
预期的输出应该是B5 ,可为什么会是0啊? class test
 {
   public static void Main()
     {
     int i=0x5A;
 int j= 0x6B;
     long i1= (long)i>>4;
 long j1= (long)j<<4;
     long k=j1&i1;
     Console.WriteLine("Result: 0x{0}",k);
     }
     
 }

解决方案 »

  1.   

    必然是0啊,首先我不清楚移位运算符和强制转换哪个优先级高,估计是移位高。这样的话这样的i右移四位变成0x5即最后三位101前面全部是0,j左移4位后最后四位是0000这样两个数做与运算结果必然是零。
      

  2.   

    也许是你的预期结果就不正确
    简化问题
    class test
     {
       public static void Main()
         {
         int i=0x100;//改为0x100
         int j= 0x1;//改为0x1
         long i1= (long)i>>4;//为0x010
         long j1= (long)j<<4;//为0x010
         long k=j1&i1;
         Console.WriteLine("Result: {0}",k);//十进制16
         Console.ReadLine();
         }
         
     }
    看看好啦