【面试题】计算某个整数 1 的位数,即 Hamming weight

polaris · 2017-10-11 11:43:48 · 3117 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2017-10-11 11:43:48 的主题,其中的信息可能已经有所发展或是发生改变。

编写一个函数,接收一个无符号整数,返回它拥有的“1”位数(也称为汉明权重,Hamming weight)。

例如,32 位整数 '11' 的二进制表示为 00000000000000000000000000001011,所以函数应该返回3。

// hammingWeight 计算 Hamming weight
func hammingWeight(n uint32) int {

}

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3117 次点击  
加入收藏 微博
4 回复  |  直到 2017-10-12 07:26:56
wi-cuckoo
wi-cuckoo · #1 · 8年之前
func hammingWeight(n uint32) int {
    var w int

    for {
        if n == 0 {
            break
        }

        if n&1 == 1 {
            w++
        }
        n = n >> 1
    }

    return w
}
yuanrr
yuanrr · #2 · 8年之前

func hammingWeight(n uint32) int { str := strconv.FormatInt(int64(n), 10) v := strings.Count(str, "1") return v }

yuanrr
yuanrr · #3 · 8年之前

func hammingWeight(n uint32) int { str := strconv.FormatInt(int64(n), 10) v := strings.Count(str, "1") return v }

yuanrr
yuanrr · #4 · 8年之前
yuanrryuanrr #2 回复

func hammingWeight(n uint32) int { str := strconv.FormatInt(int64(n), 10) v := strings.Count(str, "1") return v }

二进制把那个10改成2

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传