英文:
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 < 16; i++ {
fmt.Printf("%v\n", byte(a) >> 4)
a >>= 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 & 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 & 0xf
has the low four bits from a
and zeros in all other bits.
a := int64(1229782938247303441)
for i := 0; i < 16; i++ {
fmt.Printf("%v\n", a & 0xf)
a >>= 4
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论