求助嗯。。。C程入门的题嗯。。。不会。。。囧
7.若有以下说明与语句,则以下的输出结果为()chara=010,b=10;printf("%d\n",a^(b>>2));...
7. 若有以下说明与语句,则以下的输出结果为()
char a=010,b=10; printf("%d\n",a^(b>>2)); 展开
char a=010,b=10; printf("%d\n",a^(b>>2)); 展开
2个回答
展开全部
我晕,乍一看我懵了,不过还好,我懂得!
char是指字符型变量
char a=010,b=10;的意思是声明有两个字符型变量a,b,并把010赋值给a,把10赋值给b。
printf("%d\n",a^(b>>2)); 的意思是(%d)输出整数型,(\n)回车换行,,(a^(b>>2))将a和(b>>2)进行"^"(位运算) 运算,首先我们先看b>>2 的意思,">>"的是右移运算符,就是把b的值转换为二进制位,再将此二进制位数右移两位,即最高位补零。(就是说b=10,他的二进制位就是1010,所以右移两位且最高位补零后的值就是0010。)而a=010,其实也就是a=0000 0010,而b=0010,也就是b=0000 0010(因为char是八位的二进制的);下面说一下"^",^的意思是位运算就是把两个数(a,b)进行数的位置比较,如果相同位上的数字是不相同的话就表示为“真”,即输出1,如果相同就表示为“假”,即输出0,所以a^(b>>2)=0000 0000(因为每一位上都是相同的,所以全部输出0)!
我也是初学者,不过我从前年就开始慢慢的接触了,但是还是很菜,不知道能不能帮到你,希望对你能够有帮助,我想既然都在学习c,那就一定有能够交流的地方,如果有机会,希望能够认识一下,501675044这是我的qq!
补充:我不明白为什么a和b的赋值是不一样的?
char是指字符型变量
char a=010,b=10;的意思是声明有两个字符型变量a,b,并把010赋值给a,把10赋值给b。
printf("%d\n",a^(b>>2)); 的意思是(%d)输出整数型,(\n)回车换行,,(a^(b>>2))将a和(b>>2)进行"^"(位运算) 运算,首先我们先看b>>2 的意思,">>"的是右移运算符,就是把b的值转换为二进制位,再将此二进制位数右移两位,即最高位补零。(就是说b=10,他的二进制位就是1010,所以右移两位且最高位补零后的值就是0010。)而a=010,其实也就是a=0000 0010,而b=0010,也就是b=0000 0010(因为char是八位的二进制的);下面说一下"^",^的意思是位运算就是把两个数(a,b)进行数的位置比较,如果相同位上的数字是不相同的话就表示为“真”,即输出1,如果相同就表示为“假”,即输出0,所以a^(b>>2)=0000 0000(因为每一位上都是相同的,所以全部输出0)!
我也是初学者,不过我从前年就开始慢慢的接触了,但是还是很菜,不知道能不能帮到你,希望对你能够有帮助,我想既然都在学习c,那就一定有能够交流的地方,如果有机会,希望能够认识一下,501675044这是我的qq!
补充:我不明白为什么a和b的赋值是不一样的?
追问
那个a=010前面有0表示八进制。。。
追答
哦哦,那你要先转换成二进制的,把变量a和b都转换成二进制数,然后在进行位运算!
对了,b是二进制的还是十进制的??如果是十进制数的话,那么转换成二进制数就是b=0000 1010。然后你把a也转换成二进制数,进行^(位运算)就可以了!现在明白了不??
展开全部
b=10的二进制码是1010
按补码存储仍为1010,b>>2表示右移两位,变为二进制10(也就是十进制数2)
a=010,其中010为八进制数,也就是8,二进制为1000,补码存储为1000
符号^为异或运算,则a^(b>>2)=(1000)^(0010)=1010,转化为十进制为10
则输出为十进制数10,
我就是这样理解的,不知我的答案对不对,当做题了!
按补码存储仍为1010,b>>2表示右移两位,变为二进制10(也就是十进制数2)
a=010,其中010为八进制数,也就是8,二进制为1000,补码存储为1000
符号^为异或运算,则a^(b>>2)=(1000)^(0010)=1010,转化为十进制为10
则输出为十进制数10,
我就是这样理解的,不知我的答案对不对,当做题了!
追问
b=00001010
然后右移后不是应该是10000010吗。。。
然后那个。。。算符号变了吗
然后 不懂了
我看书上都是写成8位在右移的嗯。。。
追答
是00001010右移,右移的时候都是在前面添0的!
所以右移之后就是0000 0010,把后面那两位给移除了!
不知这回明白没
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询