你如何读取每 N 位?
Posted
技术标签:
【中文标题】你如何读取每 N 位?【英文标题】:How do you read every N bits? 【发布时间】:2021-12-20 19:40:03 【问题描述】:有一个 64 位有符号整数,我尝试每 4 位读取一次。
a := int64(1229782938247303441)
for i := 0; i < 16; i++
fmt.Printf("%v\n", byte(a) >> 4)
a >>= 4
最后一个值是 0,应该是 1。
【问题讨论】:
【参考方案1】:使用a & 0xf
获取底部 4 位。
值0xf
在低四位中具有一位,在所有其他位中具有零。按位与表达式 a & 0xf
的结果具有来自 a
的低四位和所有其他位为零。
a := int64(1229782938247303441)
for i := 0; i < 16; i++
fmt.Printf("%v\n", a & 0xf)
a >>= 4
【讨论】:
为什么是0xf
?因为在这种情况下,0xf
是一个仅设置了底部 4 位的值,十进制 15。& 0xf
屏蔽了底部 4 位上方的 a
的其余部分,a & 0xf
的结果是 @987654331 中的位@ 也是0xf
中的也是 - 因此,a
s 底部 4 位的忠实表示。您并不是真的“每 n 位读取一次”。您每次都在对整数进行运算。
我认为对于 OP 或未来的读者来说,它可能会增加你的答案,但如果你不同意,我可以清理评论;否则,我们可以在答案中添加一些关于 &
的内容。以上是关于你如何读取每 N 位?的主要内容,如果未能解决你的问题,请参考以下文章
STM8S单片机UART串口通信如何实现连续发送和接收两个8位数据
在sql数据库中,一个表中某一个字段有很多用,隔开的数据,请问用sql语句如何分别读取这个表中的每一个数据
给定一个不多于5位的正整数,求它是几位数并且按逆序分别输出每一位数字的C语言程序如何编写?