我是一位编程知识很少的指导者,但是在一些我无法弄清楚的测试中,对一些常见的编程问题需要帮助。问题如下:参见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 }
&
(AND)配合使用时,答案中的所有内容都将为零,除了最低有效位的位置(仅当其他输入在该位置为1时才为1)。而且,在您的程序中,第007行可能没有执行您想要的操作。您似乎将value
向右移了一位,但是您没有保存该移位的结果。也许您想编写类似value = value >> 1
的东西,以便它实际上修改value
变量?