我试图找到所有没有“interface”修饰符的“类”,所以我写道:

SELECT * FROM classes WHERE modifiers & ~0x80

其中0x80显然是接口修饰符。这确实过滤掉了“接口”,但也排除了没有标志的类。所以我不得不修改为:
SELECT * FROM classes WHERE modifiers=0 OR modifiers & ~0x80

这是正常的做法吗?看来很有趣,我得做两次检查。我的逻辑可能有点生疏。

最佳答案

你选择的东西,除了第8位以外的任何一位都是1。只需测试位是否显式为0:where (modifiers & 0x80) = 0

10-01 20:16