设N和B都是(无符号)整型变量,下面C代码段的功能是计算变量B的二进制表示中__________。 N=0; while(B){ B=B&(B-1);//“&”是按位“与”运算 N++; }

admin2019-05-11  28

问题 设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的最靠右的数字1变成0,其他数字不变。
B         ………10…0
B-1       ………01…1
B&(B一1)  ………00…0
这样,B=B&(B-1)的结果就是清除了B中最靠右的1个数字1。
题中的代码段中,每循环1次这样的运算,变量B中的数字1就减少1个,N就增加1,直到B变为全0为止。因此,该代码段的功能就是计算B中数字1的个数。
转载请注明原文地址:https://jikaoti.com/ti/yPL7FFFM
0

最新回复(0)