日期:2014-05-17  浏览次数:21075 次

关于c#的int和byte移位问题,迷惑中,知道的请解答一下
int类型测试程序
            int a = 69;
            a <<= 4;
            Console.WriteLine(a.ToString());
            a >>= 4;
            Console.WriteLine(a.ToString());

            Console.ReadLine();

输出:
1104
69


byte测试程序
            byte a = 69;
            a <<= 4;
            Console.WriteLine(a.ToString());
            a >>= 4;
            Console.WriteLine(a.ToString());

            Console.ReadLine();

输出结果是:
80
5


迷惑的是为什么byte类型输出的是80和5呢????????

------解决方案--------------------
byte只有8个二进制位,取值0~255。

1104明显溢出了。
------解决方案--------------------
byte类型大小在0到255之间
------解决方案--------------------
迷惑的是为什么你会觉得他不是呢?你认为他应该是多少
------解决方案--------------------
一个byte 69的二进制是 01000101,a<<4后是01010000,即十进制的80
一个int 69的二进制是 00000000 00000000 00000000 01000101(4个字节),a<<4后是 0000 00000000 00000000 010001010000,得到十进制的1104