Java - 二进制标志传染媒介

时间:2012-02-25 17:04:28

标签: java vector binary int

如果我被告知特定函数将返回二进制标志的向量(32位int值),这意味着什么?你能给出一个证明这一点的例子吗?

非常感谢。

1 个答案:

答案 0 :(得分:1)

32位整数可以看作是32个1和0的向量,并且可以使用逐位运算来提取单个位。

例如,如果FLAG_FOO是一个常量,其值为2的幂 - 例如1024 - 则flag_vector & FLAG_FOO != 0确认已设置特定位。这是因为&是“按位”;它计算为一个整数,其位为两个操作数的位为1的一个整数,其中 操作数的位为零时为零。例如,二进制00100110 &二进制1000001100000010。 (除非您使用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”选项。