假设我有一个 int 变量 n = 8。在大多数机器上,这将是一个 32 位值。我怎样才能以二进制形式只获得它的低 8 位(最低字节)?另外,我如何访问每一位以找出它是什么?
最佳答案
unsigned n = 8;
unsigned low8bits = n & 0xFF;
注意几点:
- 对于按位运算,始终使用
unsigned
类型 - 可以使用
&
运算符使用二进制掩码从数字中提取位 - 要访问低 8 位,掩码是
0xFF
,因为在二进制中它的低 8 位打开,其余为 0 - 数字8的低8位是……8(想一想)
要访问数字的特定位,请说第 k
位:
unsigned n = ...;
unsigned kthbit = (1 << k) & n;
现在,如果 n
的第 k
位为 0,则 kthbit
将为 0,并且某个正数 (2* *k
) 如果 n
的第 k
位为 1。
关于c - 如何获取 int 的低 8 位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3270307/