use*_*240 1 c network-programming operators
我正在研究一个实时协议,为每个传输的数据包添加时间戳,我不明白代码行的含义.感谢帮助.
// ts for timestamp
unsigned int ts;
if(ts & 0xffff0000){
// do something
}
Run Code Online (Sandbox Code Playgroud)
鉴于他们使用二进制和(&),其意图似乎是检查是否设置了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位或更少)相同,但显然意图是处理位,而不是实际值.