我是靠谱客的博主 执着舞蹈,这篇文章主要介绍[算法]剑指offer p10十进制中的1的个数 golang[算法]剑指offer p10十进制中的1的个数 golang,现在分享给大家,希望可以做个参考。

[算法]剑指offer p10十进制中的1的个数 golang

题目

题目:请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2

解法1

位运算中有一种方法可以确定一个位是否是1

比如确定第一位是否位 1 , 如果结果为0, 第一位就是0, 反之第一位就是 1(这里第 1 位位0)

复制代码
1
2
3
4
5
1000 0010 & 0000 0001 = 0000 0000

确认第二位(结果为 2 不是 0, 所以第 2 位是 1)

复制代码
1
2
3
4
5
1000 0010 & 0000 0010 = 0000 00010

代码

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package main import ( "fmt" "reflect" "strconv" "testing" "unsafe" "github.com/stretchr/testify/assert" ) func TestP10(t *testing.T) { examples := []struct { num int expect int }{ { num: 0, expect: 0, }, { num: 1, expect: 1, }, { num: 2, expect: 1, }, { num: 3, expect: 2, }, { num: -1, expect: 64, }, } for _, e := range examples { assert.Equal(t, e.expect, sulotionP10(e.num)) } } //输入一个整数返回整数二进制中1的个数 func sulotionP10(num int) (oneNum int) { for i := 0; i < strconv.IntSize; i++ { if num&(1<<i) != 0 { oneNum++ } } return }

最后

以上就是执着舞蹈最近收集整理的关于[算法]剑指offer p10十进制中的1的个数 golang[算法]剑指offer p10十进制中的1的个数 golang的全部内容,更多相关[算法]剑指offer内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部