c - 如何获取 int 的低 8 位?

标签 c

假设我有一个 int 变量 n = 8。在大多数机器上,这将是一个 32 位值。我怎样才能以二进制形式只获得它的低 8 位(最低字节)?另外,我如何访问每一位以找出它是什么?

最佳答案

unsigned n = 8;
unsigned low8bits = n & 0xFF;

注意几点:

  1. 对于按位运算,始终使用unsigned 类型
  2. 可以使用 & 运算符使用二进制掩码从数字中提取位
  3. 要访问低 8 位,掩码是 0xFF,因为在二进制中它的低 8 位打开,其余为 0
  4. 数字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/

相关文章:

c - 如何从文件中获取 int 和 string 并将其保存在结构中?

c - gtk显示修改后的图像

c - C中链表的链表

c - 我的输入是一个由空格分隔的数字组成的字符串,例如 10 20 200 120 50 我需要打印数组中的最大数字

c - 嵌入式 C 开发的单元测试

c - 最佳实践 : declaring global arrays of fixed length automatically

c++ - 警告 C4127 : conditional expression is constant

c - Raspberry Pi 上的 rodata

c - 调用子进程时退出状态 56

c - 给定随机起始元素,精确迭代圆形二维数组的所有元素一次