位运算符
在Java中,|=
是一个位运算符,称为按位或赋值运算符。它的作用是将左侧变量与右侧表达式进行按位或(OR)操作,并将结果赋值给左侧变量。
对于 config |= system;
这行代码,它的意思是:
config
是一个整数变量,用来存储当前的配置状态。system
是一个整数,代表要使能的系统,它的二进制表示中只有一个位是1(例如,GPS
对应的值是0x0001
,二进制表示为0000 0000 0000 0001
)。|=
运算符将config
和system
进行按位或操作,并将结果赋值给config
。
按位或操作的规则是:
- 如果两个相应的位都是1,则结果为1。
- 如果两个相应的位中至少有一个是1,则结果为1。
- 只有两个相应的位都是0,结果才为0。
所以,当你对 config
执行 config |= system;
时,system
中为1的位会将 config
中相应的位设置为1,而不影响 config
中的其他位。这样,config
中对应于 system
的位就被“使能”了。
例如,如果 config
最初是 0x0000
(所有位都是0),并且你执行 config |= GPS;
,其中 GPS
是 0x0001
,那么 config
将变为 0x0001
(只有GPS对应的位是1)。如果你接着执行 config |= BDS;
,其中 BDS
是 0x0002
,那么 config
将变为 0x0003
(GPS和BDS对应的位都是1)。这个过程可以继续,以使能更多的系统。
package com.example.demo.导航欺骗;
public class GNSSConfig {
// 定义常量,每个常量代表一个位
public static final short GPS = 0x0001; // Bit0: GPS
public static final short BDS = 0x0002; // Bit1: BDS
public static final short GLONASS = 0x0004; // Bit2: GLONASS
public static final short GALILEO = 0x0008; // Bit3: GALILEO
// 默认构造函数
private GNSSConfig() {
// 私有构造函数,防止实例化
}
// 设置系统使能状态的方法
public static short setEnabledSystems(short... systems) {
short config = 0; // 默认全部禁止
for (int system : systems) {
config |= system; // 使能指定的系统
}
return config;
}
// 获取系统使能状态的方法
public static boolean isSystemEnabled(int config, int system) {
return (config & system) != 0; // 检查指定的系统是否被使能
}
// 主方法,用于测试
public static void main(String[] args) {
// 默认全部使能
int defaultConfig = 0xFFFF;
// 使能GPS和BDS
int customConfig = setEnabledSystems(GPS, BDS);
// 检查GPS是否被使能
boolean isGPSEnabled = isSystemEnabled(customConfig, GPS);
System.out.println("Is GPS enabled? " + isGPSEnabled);
// 检查GALILEO是否被使能
boolean isGALILEOEnabled = isSystemEnabled(customConfig, GALILEO);
System.out.println("Is GALILEO enabled? " + isGALILEOEnabled);
}
}
标签:system,运算符,static,BDS,config,public,GPS
From: https://www.cnblogs.com/firsthelloworld/p/18586173