在C中-if(ptr-> name&0x10)是什么意思

时间:2018-09-18 22:15:06

标签: c

C语言新手。我了解指针和十六进制格式,但不确定'&0x10'在做什么。有人可以解释一下,也可以在主题上为我提供建议以进行研究和自学。谢谢。

if(ptr1->name & 0x10)
{
     prt2->indicator1  |= 0x80;      
}  

1 个答案:

答案 0 :(得分:0)

  

我不确定'&0x10'在做什么。有人可以解释一下还是建议   我可以研究和自学。谢谢。

if(ptr1->name & 0x10)

正在获取ptr1->name的值,并使用0x10 bitwise-ANDing

如果您了解十六进制,那么您知道0x10的十进制值为16,并且大概您知道16的值为2 ^ 4,这意味着在二进制中此值为0b10000

如果该操作的结果为非零,则表明ptr1->name的第4位已设置(位编号从0开始,例如2 ^ 0 = 0x1),并导致行prt2->indicator1 |= 0x80;

的执行

签出bitwise operators in C