Java | 整数运算符;

5 java

我用Java编程大约一年,但仍然发现了一些我不知道的东西.如何:

new Font(FontFamily.TIMES_ROMAN, 12, 1 | 4);
Run Code Online (Sandbox Code Playgroud)

如何| 与整数一起工作?

谢谢

PS我搜索了很多.

Jon*_*oni 11

|运营商计算"逐位OR"操作数的.要理解它,你必须将操作数转换为二进制:如果未在任一数字中设置该位,则产生"0"位,如果在任一数字中设置,则产生"1"位.

使用您的数字,结果4|1是5,因为:

  4 = 100
  1 = 001
4|1 = 101 = 5
Run Code Online (Sandbox Code Playgroud)

逐位OR运算符与"逐位AND"运算符有关&,如果该位未设置在其中一个数字中,则产生"0",如果在两者中都设置,则产生"1"位.

由于这些运算符处理其参数的逐位表示,因此当您习惯于处理十进制(基数为10)数时,这些运算符很难理解.以下关系成立,当您拥有另一个时,可以很容易地得到一个结果:

a + b = (a|b) + (a&b)
Run Code Online (Sandbox Code Playgroud)


NIN*_*OOP 7

它是一个按位运算OR符,在各个位的级别上运行一个或多个位模式或二进制数字.

按位^运算符执行按位异或运算.

如果任何操作数为1,OR按位运算将返回1,仅当两个操作数均为零时,返回0.

您可以在JLS 15.22.1中获得完整的描述.

 0|0 = 0
 0|1 = 1
 1|0 = 1
 1|1 = 1
Run Code Online (Sandbox Code Playgroud)

因此,在您的情况下,操作数是14.将它们转换成二进制(只有最后4位数字)将01000001分别.应用|由现在有点位:

0 1 0 0
0 0 0 1
---------
0 1 0 1 = (5 in base 10)
Run Code Online (Sandbox Code Playgroud)