如果我被告知特定函数将返回二进制标志的向量(32位int值),这意味着什么?你能给出一个证明这一点的例子吗?
非常感谢。
答案 0 :(得分:1)
32位整数可以看作是32个1和0的向量,并且可以使用逐位运算来提取单个位。
例如,如果FLAG_FOO
是一个常量,其值为2的幂 - 例如1024
- 则flag_vector & FLAG_FOO != 0
确认已设置特定位。这是因为&
是“按位”;它计算为一个整数,其位为两个操作数的位为1的一个整数,其中 操作数的位为零时为零。例如,二进制00100110
&
二进制10000011
为00000010
。 (除非您使用32位整数,显然,而不是仅使用8位。)
相反,“按位或”,|
可用于构造这样的值;例如,flag_vector = FLAG_FOO | FLAG_BAR | FLAG_BAZ
将设置三位(标志)。
例如,在the java.util.regex.Pattern
class中使用它,其静态compile
方法被重载以获取由这些标志组成的第二个参数。 Pattern.compile("a.c", CASE_INSENSITIVE | DOTALL)
根据字符串a.c
创建一个模式,其中包含“不区分大小写”和“.
- 表示任意字符,-even-newline”选项。