我在从一个字节中获取 n 位时遇到了一些麻烦。
我有一个无符号整数。假设我们的十六进制数是 0x2A,十进制是 42。在二进制中它看起来像这样:0010 1010。我如何获取前 5 位 00101 和接下来的 3 位 010,并将它们放入单独的整数中?
如果有人可以帮助我,那就太好了!我知道如何从一个字节中提取这是简单的
int x = (number >> (8*n)) & 0xff // n being the # byte
我在关于堆栈溢出的另一篇文章中看到了这一点,但我不确定如何从字节中获取单独的位。如果有人可以帮助我,那就太好了!谢谢!
原文由 user1871869 发布,翻译遵循 CC BY-SA 4.0 许可协议
整数在机器内部表示为位序列;对我们人类来说幸运的是,编程语言提供了一种以十进制(或十六进制)显示这些数字的机制,但这不会改变它们的内部表示。
You should review the bitwise operators
&
,|
,^
and~
as well as the shift operators<<
和>>
,它将帮助您了解如何解决此类问题。整数的最后 3 位是:
从最后八位开始的五位是: