二进制中1的个数 完整代码

二进制中1的个数

请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。

输入:00000000000000000000000000001011
输出:3
解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。

package main
import (
	"fmt"
	"strings"
)
func hammingWeight(num uint32) int {
	return strings.Count(fmt.Sprintf("%b",num), "1")
}

func main() {
	var num uint32
	fmt.Scanf("%b", &num)
	a := hammingWeight(num)
	fmt.Println(a)
}

如果输入的是一个整数(十进制)

package main
import (
	"fmt"
	"strconv"
)
// 将十进制数字转化为二进制字符串
func convertToBin(num int) string {
	s := ""
	if num == 0 {
		return "0"
	}
	// num /= 2 每次循环的时候 都将num除以2  再把结果赋值给 num
	for ; num > 0; num /= 2 {
		lsb := num % 2
		// strconv.Itoa() 将数字强制性转化为字符串
		s = strconv.Itoa(lsb) + s
	}
	return s
}
func main() {
	var num int
	fmt.Scanf("%d", &num)
	if num <= 0 {
		fmt.Println(-1)
	}
	s := convertToBin(num)
	sum := 0
	for i := 0; i < len(s); i++{
		if s[i] == '1'{
			sum++
		}
	}
	fmt.Printf("%d", sum)
}

转换为二、八、十六进制函数

func ConvertToX(n, num int) string {
	s := ""
	h:=map[int]string{  //加个字典类型
		0:"0",
		1:"1",
		2:"2",
		3:"3",
		4:"4",
		5:"5",
		6:"6",
		7:"7",
		8:"8",
		9:"9",
		10:"A",
		11:"B",
		12:"C",
		13:"D",
		14:"E",
		15:"F",
	}
	for ; n > 0; n /= num {
		lsb := h[n % num]
		s = lsb + s
	}
	return s
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

icc*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值