GRIT️‍ 2023-06-23 10:05 采纳率: 80.6%
浏览 13
已结题

问题:C语言的循环相关问题

img


上面结果为什么是4啊?mask<<=1是啥意思啊?求详细解答

  • 写回答

2条回答 默认 最新

  • threenewbee 2023-06-23 10:17
    关注

    mask <<= 1就是 mask = mask << 1
    也就是 mask = mask * 2
    <<二进制是向左移一位
    mask一开始是1,只有x的最低位是1,x & 1 = 1(两者都是1,返回1,否则0)
    然后 mask 依次变成了 2 4 8 ... 也就是2进制的 10 100 1000 ... 和上面同理,依次测试 x 是否倒数第二位,第三位,……是1
    这段代码的意思是输入一个数字,输出它有几个1
    23的二进制是 10111,所以有4个1,输出4

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月1日
  • 已采纳回答 6月23日
  • 创建了问题 6月23日