zoukankan      html  css  js  c++  java
  • 统计uint64的数对应二进制数的1的个数

    // pc[i] is the populatio  count of i
    var pc [256]byte

    //统计出o~255每个数对应二进制上1的个数
    func init() {
        for i := range pc {
            pc[i] = pc[i/2] + byte(i&1)
           // fmt.Printf("i = %d, pc[%d] = %d, pc[%d] = %d, byte(%d&1) =  %d ",
                i, i, pc[i], i/2, pc[i/2], i, byte(i&1))
        }
    }

    // PopCount return the population count (number of set bits) of x.
    //将x分部分左移到底八位(0~255)
    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))])
    }
    func init() {
        for i := range pc {
            pc[i] = pc[i/2] + byte(i&1)
            fmt.Printf("i = %d, pc[%d] = %d, pc[%d] = %d, byte(%d&1) =  %d ",
                i, i, pc[i], i/2, pc[i/2], i, byte(i&1))
        }
    }

    // PopCount return the population count (number of set bits) of x.

    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))])
    }

  • 相关阅读:
    javaee_正则表达式基础和常用表达式
    hello2源代码分析
    servlet_filterj简介
    hello1的web.xml解析
    Annotation
    注入(Injection)
    容器(Container)
    Building Tool(Maven/Gradle)
    JavaWeb的历史与发展趋势
    Build Tools
  • 原文地址:https://www.cnblogs.com/barfoo/p/6666576.html
Copyright © 2011-2022 走看看