设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的最靠右的数字变成0,其他数字不变。B .........10...0 B-1 ..........
查看完整答案运算符 += 的名称是__________,a+=b的等价表达式是__________。
运算符 *= 的名称是__________,a*=b的等价表达式是__________。
运算符 /= 的名称是__________,a/=b的等价表达式是__________。
运算符 %= 的名称是__________,a%=b的等价表达式是__________。
运算符 &= 的名称是__________,a&=b的等价表达式是__________。
运算符 |= 的名称是__________,a|=b的等价表达式是__________。
运算符 >>= 的名称是__________,a>>=b的等价表达式是__________。
按优先级高低排列以下运算符:&=,+,%,>>,&&,+=,!=,>>=,->,&,sizeof,++,!,[],-,?:,(),==