错题系列知识点总结02

    xiaoxiao2021-03-25  110

    假设x=65530,下面函数的返回值是多少?

    int func(int x) {

    int count = 0;

    while(x) {

    count++;

    x = x & (x - 1);

    }

    return count;

    }

    正确答案:14

    解析:这题的目的是统计int类型的x用二进制表示,其中有几个1。&运算,都为1则1,否则至少有一个不为1,则0。明白了题目的目的,我的解题思路用的是用最笨的方法将x和(x-1)的值转换成二进制,然后一次一次的&运算,得到答案。

    x&(x - 1)  统计x用二进制表示1的个数

    x|(x + 1)  统计x用二进制表示0的个数

    转载请注明原文地址: https://ju.6miu.com/read-21678.html

    最新回复(0)