如何读取每N位?

huangapple go评论78阅读模式
英文:

How do you read every N bits?

问题

有一个64位有符号整数,我想要读取每4位。

a := int64(1229782938247303441)
for i := 0; i < 16; i++ {
    fmt.Printf("%v\n", byte(a) >> 4)
    a >>= 4 
}

最后一个值是0,应该是1。

英文:

There's an 64 bit signed integer and I'm trying to read every 4 bits.

a := int64(1229782938247303441)
for i := 0; i &lt; 16; i++ {
    fmt.Printf(&quot;%v\n&quot;, byte(a) &gt;&gt; 4)
	a &gt;&gt;=  4 
}

The last value is 0 which should be 1.

答案1

得分: 3

使用a & 0xf来获取最低的4位。

0xf在低四位上有一个位为1,其他位都为0。按位与表达式a & 0xf的结果是a的低四位和其他位都为0。

a := int64(1229782938247303441)
for i := 0; i < 16; i++ {
    fmt.Printf("%v\n", a & 0xf)
    a >>= 4
}
英文:

Use a &amp; 0xf to get the bottom 4 bits.

The value 0xf has a one bit in the low four bits and zeros in all other bits. The result of the bitwise AND expression a &amp; 0xf has the low four bits from a and zeros in all other bits.

a := int64(1229782938247303441)
for i := 0; i &lt; 16; i++ {
    fmt.Printf(&quot;%v\n&quot;, a &amp; 0xf)
    a &gt;&gt;=  4 
}

huangapple
  • 本文由 发表于 2021年11月8日 02:36:14
  • 转载请务必保留本文链接:https://go.coder-hub.com/69875450.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定