对于任意一个非负整数,统计其二进制展开数位1的总数

2020-02-01  本文已影响0人  韩小禹

问题:对于任意一个非负整数,统计其二进制展开数位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
上一篇 下一篇

猜你喜欢

热点阅读