-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path191.go
38 lines (35 loc) · 1.16 KB
/
191.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package main
import "fmt"
//编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。
//
//示例 1:
//
//输入:00000000000000000000000000001011
//输出:3
//解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。
//示例 2:
//
//输入:00000000000000000000000010000000
//输出:1
//解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 '1'。
//示例 3:
//
//输入:11111111111111111111111111111101
//输出:31
//解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 '1'。
//
//来源:力扣(LeetCode)
//链接:https://leetcode-cn.com/problems/number-of-1-bits
//著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
func main() {
fmt.Println(hammingWeight(00000000000000000000000010000000))
}
func hammingWeight(num uint32) int {
// 对于任意数字 n ,将 n 和 n−1 做与运算,会把最后一个 1 的位变成 0
res := 0
for ;num != 0; {
res++
num = num & (num-1)
}
return res
}