美文网首页
Go 种群统计

Go 种群统计

作者: xuxhing | 来源:发表于2018-07-12 12:06 被阅读0次

种群统计:返回一个数字中被置位的个数(值为1)

package popcount

var pc [256]byte

func init() {
    for i := range pc {
        pc[i] = pc[i/2] + byte(i&1)
    }
}

func PopCount(x uint64) int {
    return int(pc[byte(x>>(0*8))] +
        pc[byte(x>>(1*8))] +
        pc[byte(x>>(2*8))] +
        pc[byte(x>>(3*8))] +
        pc[byte(x>>(4*8))] +
        pc[byte(x>>(5*8))] +
        pc[byte(x>>(6*8))] +
        pc[byte(x>>(7*8))])
}

2.3 使用循环重写PopCount来代替单个表达式

func PopCount(x uint64) int {
    var n = 0
    for i := uint(0); i < 8; i++ {
        n += int(pc[byte(x>>(i*8))])
    }
    return n
}

2.4 写一个用于统计位的PopCount, 它在其实际参数的64位上执行移位操作,每次判断最右边的位,进面实现统计功能

func PopCount(x uint64) int {
    var n = 0
    for i := uint(0); i < 64; i++ {
        n += int((x >> i) & 1)
    }
    return n
}

2.5 使用x&(x-1)可以清除x最右边的非零位,利用该特点写一个PopCount

func PopCount(x uint64) int {
    var n = 0
    for x != 0 {
        x = x & (x - 1)
        n++
    }
    return n
}

相关文章

  • Go 种群统计

    种群统计:返回一个数字中被置位的个数(值为1) 2.3 使用循环重写PopCount来代替单个表达式 2.4 写一...

  • GO语言初级学习之代码案例05

    @(go语言 黑马)[GO语言] 统计各字母的个数 题目:输入一串字母,统计各个字母输入的个数 逻辑:该案例统计字...

  • GO file 探索

    1.获取GO和associations 2.统计 3.how complete is GO ...2008 ...

  • Dsuite: 从VCF文件中快速计算D-统计量和亲缘相关性的工

    工具背景介绍 D统计量(也称为ABBA-BABA统计量)和相关统计量通常用于评估种群或紧密相关物种之间的是否存在基...

  • 统计基础

    注:采转归档,自己学习查询使用 统计Go, Go, Go数据描述参数估计区间估计假设检验线性回归ANOVA无参估计...

  • 遗传统计|F-Statistics:Wright & Reich

    在群体遗传学研究中,经常涉及到衡量种群和亚群遗传分化程度。因此各种统计量应运而生。这其中就包括F统计量(F-Sta...

  • linux下统计代码行数和统计子文件数命令

    find ./ -type f -name "*.go"|xargs cat | wc -l 统计代码行数 ls ...

  • Go 实现词频统计

    功能 统计多个文件中英文单词出现的次数 按照词频从多到少排序输出 支持并发 实现 创建 file.txt 内容如下...

  • 各种群

    自从疫情逐步升级,我的微信群增加了很多,有各个社区群细分到小区群楼栋群,还有各个购物群,细分到蔬菜群烤鸡群老鹅群海...

  • 创建种群的代码1--种群

    书名:代码本色:用编程模拟自然系统作者:Daniel Shiffman译者:周晗彬ISBN:978-7-115-3...

网友评论

      本文标题:Go 种群统计

      本文链接:https://www.haomeiwen.com/subject/kywlpftx.html