如果我被告知某个特定函数将返回二进制标志 vector (32 位 int 值),这意味着什么?你能举一个例子来证明这一点吗?
非常感谢。
最佳答案
一个三十二位整数可以被视为由三十二个一和零组成的 vector ,并且可以使用按位算术来提取各个位。
例如,如果 FLAG_FOO
是一个常数,其值为 2 的幂 — 例如 1024
— 然后flag_vector & FLAG_FOO != 0
确认特定位已设置。这是因为&
是“按位与”;其计算结果为一个整数,当两个操作数的位均为 1 时,该整数的位为 1;当任一操作数的位均为 0 时,该整数的位为 0。例如,二进制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
创建一个模式,启用“不区分大小写”和“.
-代表任何字符,甚至换行”选项。
关于Java - 二进制标志 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9446084/