题解 | #求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位整型范围内的正整数。

全部评论

相关推荐

10-29 11:31
吉林大学 Java
点赞 评论 收藏
分享
牛客77743221...:做一段时间,公司出钱送你去缅甸和泰国旅游
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务