Java |整数运算符;

时间:2013-07-14 15:45:50

标签: java

我用Java编程大约一年,但仍然发现了一些我不知道的东西。 怎么做:

new Font(FontFamily.TIMES_ROMAN, 12, 1 | 4);

如何|是否适用于整数?

谢谢

P.S。我google了很多。

3 个答案:

答案 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

因此,在您的情况下,操作数为14。将它们转换为二进制(仅最后4位)将分别为01000001。现在逐位应用|

0 1 0 0
0 0 0 1
---------
0 1 0 1 = (5 in base 10)

答案 2 :(得分:1)

|称为按位OR。这适用于:

  1. 将每个数字转换为二进制
  2. 对匹配位置的每个数字执行布尔OR(||)(0为假,1为真)
  3. 将结果转换回十进制
  4. 例如,

       100 | 4
    OR 001 | 1
    -------+--
       101 | 5
    

    Font构造函数的属性设计为二进制,正好一位是1.通过对这些数字进行OR运算,您可以打开表示ORed选项的数字。