题解 | #求int型正整数在内存中存储时1的个数#
求int型正整数在内存中存储时1的个数
https://www.nowcoder.com/practice/440f16e490a0404786865e99c6ad91c9
package main
import (
"fmt"
)
func main() {
var n int
fmt.Scan(&n)
count := 0
for n != 0 {
if n&1 == 1 {
count++
}
n = n >> 1
}
fmt.Println(count)
}
下面是使用Golang实现计算一个整数在内存中存储时1的个数的代码:
package main
import (
"fmt"
)
func main() {
var num int
fmt.Print("请输入一个整数:")
fmt.Scan(&num)
count := countOnes(num)
fmt.Printf("%d 在二进制表示中含有 %d 个1\n", num, count)
}
func countOnes(num int) int {
count := 0
for num != 0 {
count++
num = num & (num - 1)
}
return count
}
这段代码首先从标准输入读取一个整数,然后调用countOnes函数计算该整数在二进制表示中含有多少个1。countOnes函数使用了经典的位操作技巧,通过不断将数字与其自身减1后的结果进行按位与操作,直到数字为0为止,统计期间执行的次数即为1的个数。最后输出结果。
注意,此代码假设输入的整数是32位整型范围内的正整数。
