C 如何获取整数的低8位?
假设我有一个int变量n=8。在大多数机器上,这将是一个32位的值。我怎么能只得到这个二进制的低8位(最低字节)?另外,我如何访问每个位来找出它是什么?使用逐位算术来屏蔽最低的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(想一想
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 */