題倒是很簡單,最開始用了這麼一種解法:
package main
import "fmt"
func main() {
a := 0
fmt.Scan(&a)
str := fmt.Sprintf("%b", a)
fmt.Printf("%d", convert(str))
}
func convert(str string) int {
sum := 0
for i := 0; i < len(str); i++ {
if str[i] == '1' {
sum += 1
}
}
return sum
}
但是看着就不是很優雅,還是用位運算看着優雅些:
package main
import "fmt"
func main() {
a := 0
fmt.Scan(&a)
count := 0
for a != 0 {
if a&1 == 1 {
count += 1
}
a = a >> 1
}
fmt.Printf("%d", count)
}