This question already has answers here:
Closed last year.
What are bitwise operators?
(9个答案)
C语言新手。我理解指针和十六进制格式,但我不确定“&0x10”在做什么。有人能解释一下吗?或者给我一些建议,让我自己研究和自学。谢谢您。
if(ptr1->name & 0x10)
{
     prt2->indicator1  |= 0x80;
}

最佳答案

我不知道“&0x10”在做什么。有人能解释一下吗
我研究和自学的课题。谢谢您。
if(ptr1->name & 0x10)
不管ptr1->name的值是多少,用0x10bitwise-ANDing的值。
如果你理解十六进制,那么你知道0x10是十进制的16,而且你大概知道16是2^4,这意味着二进制的这个值是0b10000
如果这个操作的结果是非零的,那么这就告诉我们设置了ptr1->name的第4位(位编号从0开始,例如2^0=0x1),并将导致执行行prt2->indicator1 |= 0x80;
退房bitwise operators in C

10-06 15:24