"ts&0xffff0000"的目的是什么?

use*_*240 1 c network-programming operators

我正在研究一个实时协议,为每个传输的数据包添加时间戳,我不明白代码行的含义.感谢帮助.

// ts for timestamp
unsigned int ts;


if(ts & 0xffff0000){
 // do something
}
Run Code Online (Sandbox Code Playgroud)

Moo*_*uck 5

鉴于他们使用二进制和(&),其意图似乎是检查是否设置了16个高位中的任何一个.

二进制 - 检查两个数字中每个位置的位,如果它们都是1,那么结果在同一位置为1位.否则结果在该位置为零

0b 001001001001001001001001001001  (first number, usually a variable)
0b 010101010101010101010101010101  (second number, usually a "mask")
=================================
0b 000001000001000001000001000001  (result)
Run Code Online (Sandbox Code Playgroud)

如果将其用作if块的条件,例如if (x & mask),如果x具有与maskset 相同的位,则输入if块.因为0xFFFF0000,如果设置了任何高16位,将进入该块.

这实际上与if (ts > 65535)(如果int是32位或更少)相同,但显然意图是处理位,而不是实际值.