C# $运算符 每个位进行&运算

            int  x=0x3,y ;
            y = x & 0x1;
            MessageBox.Show(Convert.ToString(y));   
           以上可以正常运算和编译。

            byte x=0x3,y ;
            y = x & 0x1;
            但是除了int 或uint类型以外,其它类型都会报错???
 


           

C#编译器会认为byte类型和byte类型运算的结果是int型

强制转换一下 y=(int)(x & 0x1)

强转一下就好了

byte x = 0x3, y ;

y =(byte)x & 0x1