c语言中的按位与运算的一题

若x=10010111,则表达式(3+(int)(x))&(~3)的值是? 最好能把程序给我看看,再讲解下,谢谢

把这个程序贴出来,希望你看得懂:


#include<stdio.h>

#include<stdlib.h>

/*把数a从b进制转换成c进制*/

int   transfer(int   a,int   b,int   c) 

        char   s[100]; 

        int   rv,   n=0,   base=1; 

        while(a)//a从b进制的转化为10进制的 

        { 

                n+=(a%10)*base; 

                base*=b; 

                a/=10; 

        }         

        itoa(n,   s,   c);//函数调用n转化为C进制的,存在数组S中 

        sscanf(s,   "%d ",   &rv); 

printf("将数a从%d进制转换成%d进制后是%d\n",b,c,rv);

return rv;

int main()

{

int x;

//将x的值转换成10进制

x = transfer(10010111,2,10);

//重新求x的值

x = (3 + (int)x & (~3));

//将X的值转换成2进制

x = transfer(x,10,2);

return 0;


追问

能不能加下QQ啊?我想请教你一下详细问题?主要是9月要考试了。。。

追答

可以啊,你QQ多少?

追问

282493099

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-30
要看x是什么类型,(int)(x)对无符号的x和有符号的x是不一样的,如果x为无符号数,则
3 + (int)(x) = 0x9a, 而~3为0xfffc, 与运算后最终答案为0x98.追问

x=10010111 我还是没明白。。。书上答案是:10011000

追答

二进制的10011000就是十六进制的0x98

第2个回答  2012-08-30
(3+(int)(x))为10011010 ~3为11111100 两个&后为10011000

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网