我经常阅读有关按位操作的内容,但是,我仍然无法理解这一行。
((text.flags & ~Text.BOLD) & ~Text.ITALIC) | Text.BOLD | Text.ITALIC
似乎作者试图确保此文本没有BOLD和ITALIC的样式,然后他将文本设为ITALIC和BOLD。
我是对的,还是遗漏了一些细节?
答案 0 :(得分:2)
不,你已经得到了; &
操作正在删除BOLD
和ITALIC
位,而|
操作会设置它们。
答案 1 :(得分:2)
似乎关闭了所有不是BOLD
而不是ITALIC
的旗帜(通过补充的&
),然后确保BOLD | ITALIC
已设置(通过{ {1}})。
最终结果是对于任何输入|
,无论样式如何,输出都是 text
可以重写为
text
答案 2 :(得分:2)
让我们从4位标志开始。
BOLD = 0001;
ITALIC = 0010
flags & ~BOLD =
flags & ~0001 =
flags & 1110 = clear BOLD flag.
flags | ITALIC =
flags | 0010 =
flags | 0010 = set ITALIC flag