Golang中的0x1是什么意思?

aroooo:

我正在尝试理解这段代码,该代码用于返回字节数组以多少个前缀开头的零,但是我不确定0x1是什么。Google搜索没有帮助,但我假设0x1要返回第一位?这些叫什么?

另外,我知道这是一个单独的问题,但我认为它并不需要一个新的线程:我不太理解为什么我们在这里嵌套一个循环,移位并从7中减去j。被转换成二进制?

IdLength := 32
func PrefixLen(count [IdLength]byte) int {
    for i := 0; i < IdLength; i++ {
        for j := 0; j < 8; j++ {
            if (count[i]>>uint8(7-j))&0x1 != 0 {
                return i*8 + j
            }
        }
    }
    return IdLength*8 - 1
}
Chang Qian :

0x1只是number的十六进制表示法1您需要&一些整数0x1以获取其最低有效(最右边)位。您编写0x1而不是1使用位掩码,是因为从基数16转换比从基数10转换成基数2更容易。

对于第二个问题,怎么func PrefixLen做的是找到的开头的连续零个数count外循环每次执行一个字节,而内循环处理单独的位:当j = 0时,它向右移7从而从左获得第一位,当j = 1时,其移6得到第二个位,依此类推上。当位的1遇到它返回的比特数已经选中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章