关于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