C 如何获取整数的低8位?

C 如何获取整数的低8位?,c,C,假设我有一个int变量n=8。在大多数机器上,这将是一个32位的值。我怎么能只得到这个二进制的低8位(最低字节)?另外,我如何访问每个位来找出它是什么?使用逐位算术来屏蔽最低的8位: unsigned char c = (x & 0xFF); 要访问第n个最低位,等式为(x&(1 请注意以下几点: 对于按位操作,始终使用无符号类型 可以使用带有&运算符的二进制掩蔽从数字中提取位 要访问低位8位,掩码为0xFF,因为在二进制中,它的低位8位已打开,其余为0 数字8的低位8位是…8(想一想

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

使用逐位算术来屏蔽最低的8位:

unsigned char c = (x & 0xFF);
要访问第n个最低位,等式为
(x&(1
请注意以下几点:

  • 对于按位操作,始终使用
    无符号
    类型
  • 可以使用带有
    &
    运算符的二进制掩蔽从数字中提取位
  • 要访问低位8位,掩码为
    0xFF
    ,因为在二进制中,它的低位8位已打开,其余为0
  • 数字8的低位8位是…8(想一想)

  • 要访问数字的某一位,请说出
    k
    th位:

    unsigned n = ...;
    unsigned kthbit = (1 << k) & n;
    
    无符号n=。。。;
    
    unsigned kthbit=(1您可以使用测试是否在数字中设置了特定位。最好的方法是使用位逻辑运算符&以及正确的值

    因此,对于较低的8位:

    n & 0xFF; /* 0xFF == all the lower 8 bits set */
    
    或者作为一般规则:

    n & ((1<<8)-1) /* generate 0x100 then subtract 1, thus 0xFF */
    
    n&((13)只是将值设为0或1,而不是0或非0*/
    
    第一位是指第0位还是第1位?
    n & ((1<<8)-1) /* generate 0x100 then subtract 1, thus 0xFF */
    
    (n & (1<<3))>>3; 
      /* will give the value of the 3rd bit - note the >>3 is just to make the value either 0, or 1, not 0 or non-0 */