2020-3-9刷题
以下代码输出什么? B int a =1,b =32 ; printf("%d,%d",a<<b,1<<32); A 1,1 B 1,0 C 0,0 D 0,1 << 左移 用来将一个数的各二进制位全部左移N位,高位舍弃,低位补0。 >> 右移 将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0。 左移运算符(<<)将其左侧运算对象每一位的值向左移动其右侧运算对象指定的位数。 a的二进制值:0000 0001 b的二进制值:0010 0000 a<<b:a左移32位,得到结果1。 进行探索, 当a左移1位,printf("%d",a<<1); 打印结果是:2 当a左移2位,printf("%d",a<<2); 打印结果是:4 ...... 当a左移30位,printf("%d",a<<30); 打印结果是:1073741824 当a左移31位,printf("%d",a<<30); 打印结果是:-2147483648 当a左移32位,printf("%d",a<<30); 打印结果是:1 当a左移33位,printf("%d",a<<30); 打印结果是:2 当a左移34位,printf("%d",a<<30); 打印结果是:4 ...... 当a左移34位,printf("%d",a<<30); 打印结果是:4 ... 当a左移62位,printf("%d