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)
它是一个按位运算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)
因此,在您的情况下,操作数是1和4.将它们转换成二进制(只有最后4位数字)将0100和0001分别.应用|由现在有点位:
0 1 0 0
0 0 0 1
---------
0 1 0 1 = (5 in base 10)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
159 次 |
| 最近记录: |