当前位置 : 主页 > 网络编程 > 其它编程 >

9999二进制及x=x&(x1)问题

来源:互联网 收集:自由互联 发布时间:2023-07-02
题目:以下代码结果是多少?#includeusingnamespacestd;int?func(int?x){????int?count??0;????whil 题目:以下代码结果是多少? # include using namespace std; int func(int x) {     int count = 0;     while(x)  
题目:以下代码结果是多少?#includeusingnamespacestd;int?func(int?x){????int?count??0;????whil

题目:以下代码结果是多少?

# include

using namespace std;

int func(int x)

{

    int count = 0;

    while(x)

    {

        count ++;

        x=x

    }

    return count;

}

 

int main(int argc, char **args)

{

    cout << func(9999) <

 

    return 0;

}

 

A. 8    B. 9    C. 10    D. 11

 

 

看到这道题,结合后面的选项,我想,题目考察的肯定不是简单的计算问题,选项上面只有8,9,10和11

这几种情况,于是,我就想,先把9999化成二进制的形式:1001 1100 0011 11,然后,将这个数值带

到上面的func()函数中,一步一步算,从后面的答案知道,题目最坏的情况是循环11次,也不多。所以,

经过“漫长的计算”,得出count的结果为8,这不正好是9999化成二进制中1的个数吗? 为什么经过x=x

 

当x为0时,x

    else

        return 0;

}

 

int main()

{

    int x = 8;

    printf("%d\n", func(x));

}

9999二进制 及 x=x&(x-1)问题

网友评论