在java中使用|

在java中使用|,java,bitwise-operators,bitwise-or,Java,Bitwise Operators,Bitwise Or,我遇到了一个java代码,其中常量的定义如下 static final char FM = (char) (ConstantsSystem.DOUBLE_BYTE_SEP | 0xFE); |在该代码中有什么用途?该|是按位OR运算符。其工作原理如下: 0 | 0 == 0 0 | 1 == 1 1 | 0 == 1 1 | 1 == 1 在内部,整数表示为位序列。因此,如果您有,例如: int x = 1 | 2; 0000 0000 1111 1110 这相当于: int x

我遇到了一个java代码,其中常量的定义如下

 static final char   FM = (char) (ConstantsSystem.DOUBLE_BYTE_SEP | 0xFE);

|
在该代码中有什么用途?

|
是按位OR运算符。其工作原理如下:

0 | 0 == 0
0 | 1 == 1
1 | 0 == 1
1 | 1 == 1
在内部,整数表示为位序列。因此,如果您有,例如:

int x = 1 | 2;
0000 0000 1111 1110
这相当于:

int x = 0001 | 0010;
int x = 0011;
int x = 3;
注意:为了清晰起见,我只使用了4位,但是Java中的
int
由32位表示

例如,如果我们假设
ConstantsSystem.DOUBLE_BYTE_SEP
的值为256,则具体寻址您的代码:

static final char FM = (char) (ConstantsSystem.DOUBLE_BYTE_SEP | 0xFE);
static final char FM = (char) (256 | 254);
static final char FM = (char) (0000 0001 0000 0000 | 0000 0000 1111 1110);
static final char FM = (char) (0000 0001 1111 1110);
static final char FM = (char) (510);
static final char FM = 'Ǿ';
还请注意,我编写二进制数的方式并不是如何在Java中表示二进制。例如:

int x = 1 | 2;
0000 0000 1111 1110
真的是:

0b0000000011111110

文档:

|
是按位OR运算符。其工作原理如下:

0 | 0 == 0
0 | 1 == 1
1 | 0 == 1
1 | 1 == 1
在内部,整数表示为位序列。因此,如果您有,例如:

int x = 1 | 2;
0000 0000 1111 1110
这相当于:

int x = 0001 | 0010;
int x = 0011;
int x = 3;
注意:为了清晰起见,我只使用了4位,但是Java中的
int
由32位表示

例如,如果我们假设
ConstantsSystem.DOUBLE_BYTE_SEP
的值为256,则具体寻址您的代码:

static final char FM = (char) (ConstantsSystem.DOUBLE_BYTE_SEP | 0xFE);
static final char FM = (char) (256 | 254);
static final char FM = (char) (0000 0001 0000 0000 | 0000 0000 1111 1110);
static final char FM = (char) (0000 0001 1111 1110);
static final char FM = (char) (510);
static final char FM = 'Ǿ';
还请注意,我编写二进制数的方式并不是如何在Java中表示二进制。例如:

int x = 1 | 2;
0000 0000 1111 1110
真的是:

0b0000000011111110

文档:

嗯,
|
是操作员……嗯,
是运算符…如果你检查变量
constantsystem.DOUBLE\u BYTE\u SEP
0xFE
你会看到它们都是二的幂。如果你检查变量
constantsystem.DOUBLE\u BYTE\u SEP
0xFE
你会看到它们都是二的幂。