首页 > 试题广场 >

【单选】假定x=500,下面函数的返回值是 ()int fu

[单选题]
假定x=500,下面函数的返回值是 ()
int fun(int x) {
    int countx = 0;
    while (x) {
        countx++;
        x = x & (x – 1);
    }
    return countx;
}


  • 2
  • 3
  • 5
  • 6
x = 500时,x-1=499,用二进制表示
111110100
x-1为
111110011
当他们执行&运算并赋值给x,结果x为
111110000
x-1
111101111
x
111100000
如此类推到结果为000000000,应该发现x = x&(x-1)就是将x二进制位1变为0。x为500时二进制为1的位有6个,所以结果为6
发表于 2019-08-27 17:37:45 回复(1)
x=x&(x-1)   统计x二进制数中1的个数
发表于 2021-05-06 13:43:12 回复(0)

这个算法是求二进制中1的格式,重点是怎么求500的二进制,512的二进制是2的9次方

编辑于 2022-04-18 23:42:56 回复(0)
x=x&(x-1)统计x二进制中1的个数
发表于 2023-12-22 02:44:48 回复(0)