题目要求
设 int b=2;表达式(b>>2)/(b>>1)的值是
思路分析
这个 ' << ' 的叫左移运算符, 这个' >> '是右移运算符
左移运算符将一个数的各二进制位全部左移若干位,移动的位数由右操作数指定,右操作数必须是非负值,其右边空出的位用0填补,高位左移溢出则舍弃该高位。左移一位相当于该数乘以2,左移2位相当于该数乘以2^2=4。
右移运算是将一个二进制位的操作数按指定移动的位数向右移动,移出位被丢弃,左边移出的空位或者一律补0,或者补符号位,右移一位相当于该数乘以2,右移2位相当于该数乘以2^2=4。
所以(b>>2)/(b>>1)即为 (2/4)/(2/2) 因为是int 型,2/4取整 为0,,2/2为1,最后的结果应该为0
撸写代码
#include<stdio.h>
int main()
{
int b=2,m,n;
m=(b>>2);
n=(b>>1);
printf("(b>>2)=%d,(b>>1)=%d\n",m,n);
printf("(b>>2)/(b>>1)=%d\n",m/n);
return 0;
}