牛客 题库 统计二进制数中1或0的个数

来源:互联网 发布:python改变turtle颜色 编辑:程序博客网 时间:2024/05/18 07:02

1.假定x=65530,下面函数的返回值是多少?( )

链接:https://www.nowcoder.com/questionTerminal/1892b05c08754c61ba54ad696a1cdcc8来源:牛客网int func(x){    int countx=0;    while(x)    {        countx++;        x=x&(x-1);    }    return countx;}

解答:·14


函数的作用是统计x二进制数中1的个数。这个作用是对整型中1的个数进行统计,x=x&(x-1);的作用是每次循环把

x的二进制中从右往左数的最后一位1变成0,直道变成全0为止,循环结束。

int func(x){int countx = 0;while (x)//当x不为0时循环{countx++;//记录循环次数x = x & (x - 1);//&是按位与操作,即以二进制bit进行比较,只有全1时才是1,否则该位为0 }return countx;//返回循环次数 }
 65530的二进制是0000 0000 0000 0000 1111 1111 1111 1010,所以结果是14 


X&(X-1) ;统计X的二进制中1的个数;
X|(X+1);统计X的二进制中0的个数;
 & (位   “与”):都为1时,结果为1
 |   (位    “或”):只要有一个为1,结果就是1

原创粉丝点击