对于任意一个非负整数,统计其二进制展开数位1的总数
作者:
韩小禹 | 来源:发表于
2020-02-01 18:57 被阅读0次
问题:对于任意一个非负整数,统计其二进制展开数位1的总数。
- 例如:129 = 1000 0001 ,共计2个1。
package main
import "fmt"
func countOnes(num int) int {
ones := 0
for 0 < num {
fmt.Printf("%b\n", num)
ones += 1 & num
num = num >> 1
}
return ones
}
func main() {
ones := countOnes(12900)
fmt.Printf("12900的二进制数中含有%d个1\n", ones)
}
# 运算结果
11001001100100
1100100110010
110010011001
11001001100
1100100110
110010011
11001001
1100100
110010
11001
1100
110
11
1
12900 的二进制数中含有6个1
111111
11111
1111
111
11
1
63 的二进制数中含有6个1
10000001
1000000
100000
10000
1000
100
10
1
129 的二进制数中含有2个1
本文标题:对于任意一个非负整数,统计其二进制展开数位1的总数
本文链接:https://www.haomeiwen.com/subject/yemxxhtx.html
网友评论