【解题报告】lintcode365求二进制中有多少个1

题意

求一个32位整数的二进制中有多少个1

解法

位运算,每次减一然后按位与,由于借位原理,当数字变为0的时候,就没有1了
例子:
5(101)
第一轮
5 – 1 = 4(100)
5 & 4 = 4(100)
第二轮
4 – 1 = 3(011)
4 & 3 = 0(000)
此时n = 0,停止,进行了2轮,所以有两个1

代码

u3coding
A software developer

Leave a Comment

Your email address will not be published. Required fields are marked *

*