Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bitmask 如何确定此位掩码代码的作用_Bitmask - Fatal编程技术网

Bitmask 如何确定此位掩码代码的作用

Bitmask 如何确定此位掩码代码的作用,bitmask,Bitmask,我是一名编程方面知识很少的讲师,但需要一些来自测试的常见编程问题的帮助,这些问题我无法理解。问题内容如下: 参考第004行;表达式“value&1”执行以下哪项操作 001 unsigned int bitCount (int value) { 002 unsigned int count = 0; 003 while (value > 0) { //until all bits are zero 004 if ((value

我是一名编程方面知识很少的讲师,但需要一些来自测试的常见编程问题的帮助,这些问题我无法理解。问题内容如下: 参考第004行;表达式“value&1”执行以下哪项操作

    001 unsigned int bitCount (int value) {
    002 unsigned int count = 0;
    003    while (value > 0) {        //until all bits are zero
    004       if ((value & 1) ==1) {  //check lower bit
    005             count++;
    006       }
    007       value >>1;
    008    }
    009    return count;
    010 }
  • 屏蔽除lsb之外的所有位
  • 仅屏蔽msb
  • 屏蔽除msb之外的所有位
  • 仅屏蔽lsb

在C中,
&
运算符执行按位AND运算。换句话说,它逐位遍历这两个数字,并且仅当两个输入位都为1时,才将答案的对应位设置为1

在二进制中,数字1是000…00001,换句话说,它只有一个在最低有效位位置。因此,当您使用它时,答案中的所有内容都将为零,除了可能的最低有效位位置,只有当其他输入在该位置有1时,该位置才为1

另外,在您的程序中,007行可能不符合您的要求。看起来您将
向右移动了一位,但是没有保存移动的结果。也许您想编写类似于
value=value>>1
的代码,以便它实际修改
value
变量