帮忙解决一道简单的c语言问题

main()
{unsigned a=0112,x;
x=a>>3;
printf("x=%o",x)
}
答案是11,解释:右移高位补零。
这个解释应该怎么理解

>>右移操作就是把第一个操作数的二进制形式向右移动第二个操作数指定的位数,移出的位就舍去了
比如
int a=5; //5二进制形式为0101
int b=a>>1; //b的值是a向右移1位,变成了0010

看题,
a=0112; //这里0112是一个八进制表示的数,二进制形式为01001010
x=a>>3; //01001010右移3位变成了00001001,就是十进制的9
printf("x=%o",x); //用八进制打印,9的八进制形式为11,所以打印出来是11
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-03-12
右移操作就是把一个二进制数向右移动。右移多少位它会把最右边多少位数舍去,而在左边补上0.
比如,十进制的239 就是二进制的11101111右移两位就变成00111011,再变成十进制就是59了
如果不会这些进制就找资料看,进制是基础
相似回答