设 N 和 B 都是(无符号)整型变量,下面 C 代码段的功能是计算变量 B 的

最全题库2022-08-02  48

问题 设 N 和 B 都是(无符号)整型变量,下面 C 代码段的功能是计算变量 B 的二进制表示中    (   )。N=0;while(B){B=B&(B-1);    //     "&"是按位"与"运算N++;}A.数字 1 的个数B.数字 1 比数字 0 多的数目C.数字0的个数D.数字0比数字 1 多的数目

选项 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=B&(B-1) 的结果就是清除了 B 中最靠右的 1 个数字 1。题中的代码段中,每循环 1 次这样的运算,变量 B 中的数字 1 就减少 1 个, N就增 加1,直到 B 变为全0为止。因此,该代码段的功能就是计算 B 中数字 1 的个数。
转载请注明原文地址:https://www.tihaiku.com/congyezige/2427002.html

最新回复(0)