2015-08-15 270 views
1

我在我的应用程序中发现了一个MySQL查询,我真的不明白。它很长,这只是它的一部分,我不明白:这是什么MySQL查询?

WHERE (id & 0xff = 0) OR ((id >= 3000) AND (id & 0xff != 0xff)) 

到底是什么这个“0xFF的”? Threre在此表中没有列'0xff'。

+1

它只是一个十六进制数字。 – Sirko

+0

谢谢你的回复。为什么这是在查询中? 0xff!= 0xff对我来说毫无意义(因为它总是假的......)。 – Tream

+0

你见过这个吗? http://stackoverflow.com/questions/11380062/what-does-value-0xff-do-in-java – THK

回答

2

0xff二进制值是00000000000000000000000011111111 (under the 32-bit integer)

如果你做0xff一个bitwise AND,它给了只有在last 8 bits值,所有其他咬伤消失(因为1 & 0 = 00 & 0 = 0

id & 0xff = 0 

这将检查last 8 bits are 00000000;

id & 0xff != 0xff 

这将检查last 8 bits != 11111111;

+0

非常感谢! – Tream