黑马程序员技术交流社区

标题: 移位运算符的疑惑 [打印本页]

作者: mzh901024    时间: 2013-8-19 20:55
标题: 移位运算符的疑惑
uint  m=4294967295;
uint  t;
t=m<<8;
Console.WriteLine(t);
Console.ReadLine();
运行的结果为4294967040

.如果写成
t=m>>16
运行结果为65535
上面的两种结果都是怎么运算的?
作者: 许庭洲    时间: 2013-8-20 06:14
1. 例如int i = 1;
    i = i << 2;    //把i里的值左移2位

  2. 1的2进制是000...0001(这里1前面0的个数和int的位数有关,32位机器,gcc里有31个0)
3. 左移2位之后变成 000... 0100,也就是10进制的4,
4. 所以说左移1位相当于乘以2,那么左移n位就是乘以2的n次方了






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2