
帮忙解决一道简单的c语言问题
main(){unsigneda=0112,x;x=a>>3;printf("x=%o",x)}答案是11,解释:右移高位补零。这个解释应该怎么理解...
main()
{unsigned a=0112,x;
x=a>>3;
printf("x=%o",x)
}
答案是11,解释:右移高位补零。
这个解释应该怎么理解 展开
{unsigned a=0112,x;
x=a>>3;
printf("x=%o",x)
}
答案是11,解释:右移高位补零。
这个解释应该怎么理解 展开
2个回答
展开全部
>>右移操作就是把第一个操作数的二进制形式向右移动第二个操作数指定的位数,移出的位就舍去了
比如
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
比如
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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询