设N和B都是(无符号)整形变量,下面C代码段的功能是计算变量B的二进制表示中【 】。
N=0;
while(B){
B=B&(B-1);//“&”是按位“与”运算
N++;
}
A、数字1的个数
B、数字1比数字0多的数目
C、数字0的个数
D、数字0比数字1多的数目
设N和B都是(无符号)整形变量,下面C代码段的功能是计算变量B的二进制表示中【 】。
N=0;
while(B){
B=B&(B-1);//“&”是按位“与”运算
N++;
}
A、数字1的个数
B、数字1比数字0多的数目
C、数字0的个数
D、数字0比数字1多的数目
A如果B=0(二进制全0),则计算得到N=0。如果B非0(二进制表示中含有数字1),则B-1必然是将最靠右的数字1变成0,并将其右面(若存在)连续若干个0变成1。B&(B-1)的结果就是将原来B的最靠...
查看完整答案