设N和B都是(无符号)整型变量,下面C代码段的功能是计算变量B的二进制表示中__________。N=0;while(B){ B=B&(B-1);//“&”是按位“与”运算 N++; }
【正确答案】 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的个数。