我用Java编程大约一年,但仍然发现了一些我不知道的东西。 怎么做:
new Font(FontFamily.TIMES_ROMAN, 12, 1 | 4);
如何|是否适用于整数?
谢谢
P.S。我google了很多。
答案 0 :(得分:11)
|
运算符计算其操作数的"bit-wise OR"。要理解它,你必须将操作数转换为二进制:如果未在任一数字中设置该位,则产生“0”位,如果在任一数字中设置,则产生“1”位。
根据您的号码,4|1
的结果为5,因为:
4 = 100
1 = 001
4|1 = 101 = 5
按位OR运算符与“逐位AND”运算符&
相关,如果未在其中一个数字中设置该位,则产生“0”,如果未在其中一个数字中设置,则产生“1”位它设置在两者中。
由于这些运算符处理其参数的逐位表示,因此当您习惯于处理十进制(基数为10)数时,这些运算符很难理解。以下关系成立,当您拥有另一个时,可以很容易地得到一个结果:
a + b = (a|b) + (a&b)
答案 1 :(得分:7)
它是一个按位OR
运算符,在各个位的级别上运行一个或多个位模式或二进制数字。
bitwise ^运算符执行按位异或运算。
如果任何操作数为1,则按位操作将返回1,仅当两个操作数都为零时,返回0。
您可以在JLS 15.22.1。
中获得完整的说明 0|0 = 0
0|1 = 1
1|0 = 1
1|1 = 1
因此,在您的情况下,操作数为1
和4
。将它们转换为二进制(仅最后4位)将分别为0100
和0001
。现在逐位应用|
:
0 1 0 0
0 0 0 1
---------
0 1 0 1 = (5 in base 10)
答案 2 :(得分:1)
|
称为按位OR。这适用于:
||
)(0为假,1为真)例如,
100 | 4
OR 001 | 1
-------+--
101 | 5
Font
构造函数的属性设计为二进制,正好一位是1.通过对这些数字进行OR运算,您可以打开表示ORed选项的数字。