首页 > 其他分享 >位运算符

位运算符

时间:2024-12-04 14:11:42浏览次数:10  
标签:system 运算符 static BDS config public GPS

位运算符

在Java中,|= 是一个位运算符,称为按位或赋值运算符。它的作用是将左侧变量与右侧表达式进行按位或(OR)操作,并将结果赋值给左侧变量。

对于 config |= system; 这行代码,它的意思是:

  1. config 是一个整数变量,用来存储当前的配置状态。
  2. system 是一个整数,代表要使能的系统,它的二进制表示中只有一个位是1(例如,GPS 对应的值是 0x0001,二进制表示为 0000 0000 0000 0001)。
  3. |= 运算符将 configsystem 进行按位或操作,并将结果赋值给 config

按位或操作的规则是:

  • 如果两个相应的位都是1,则结果为1。
  • 如果两个相应的位中至少有一个是1,则结果为1。
  • 只有两个相应的位都是0,结果才为0。

所以,当你对 config 执行 config |= system; 时,system 中为1的位会将 config 中相应的位设置为1,而不影响 config 中的其他位。这样,config 中对应于 system 的位就被“使能”了。

例如,如果 config 最初是 0x0000(所有位都是0),并且你执行 config |= GPS;,其中 GPS0x0001,那么 config 将变为 0x0001(只有GPS对应的位是1)。如果你接着执行 config |= BDS;,其中 BDS0x0002,那么 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

相关文章

  • 一不小心就容易出错的c语言运算符优先级
      有些人说c语言是简洁高效的,又有些人说c语言是深邃复杂的,说实话,这确实是仁者见仁智者见智。但是有一点不可否认,c语言中的运算符众多,不注意的话,确实很容易弄错。一、*与.的优先级比较  对于一个结构体p包含一个指针*f,那么*p.f的运算优先规则是怎样?  *p.f=*(p......
  • 逻辑运算符
    逻辑运算符在程序开发中,通常在判断条件时,需要同时判断多个条件,只有多个条件都满足,才能执行后续代码,这个时候需要用到逻辑运算符运算符逻辑表达式描述实例andxandy布尔“与”:如果x为False,xandy返回False,否则它返回y的值。TrueandFalse,返回False。or......
  • JavaScript 运算符
    JavaScript 运算符运算符=用于赋值。运算符+用于加值。运算符=用于给JavaScript变量赋值。算术运算符 + 用于把值加起来。实例指定变量值,并将值相加:y=5;z=2;x=y+z;在以上语句执行后,x 的值是:7尝试一下»JavaScript算术运算符与/或值之间的算术......
  • 这两种展开运算符的方式有什么区别呢?
    在JavaScript的前端开发中,有两种主要的展开运算符(spreadoperator)...的用法,它们分别应用于数组/类数组和对象。虽然符号相同,但作用略有不同:1.数组/类数组的展开:作用:将数组或类数组的元素"展开"成独立的项。场景:复制数组:创建一个新数组,包含原数组所有元素......
  • C#面向对象之抽象,接口,运算符重载,属性,索引器
    目录1抽象1.1抽象方法1.1.1抽象方法1.1.2虚方法1.1.3new1.2抽象属性1.3抽象示例2接口2.1定义2.2简单使用2.2.1声明使用接口2.2.2接口继承2.3接口显式实现和隐式实现2.3.1隐式实现2.3.2显式实现2.3.3多接口实现中的应用3运算符重载operator3.1简介3.2示例4属......
  • 【C++】数据的输入、运算符(上)
    1.数据的输入作用:用于从键盘上获取数据关键字:cin语法:cin>>变量;例如:代码:#include<iostream>usingnamespace std;intmain(){   //整形数据   inta=0;   cout<<"请给整型变量a赋值:"<<endl;   cin>>a;   cout<<"整型变量a="......
  • Python入门基础语法之运算符类型和语法
    运算符类型和语法运算符基本概念需注意,虽然python中无常量,但人为规定,在运行过程中值不能改变的为常量,要全部大写。操作数:参与运算的变量或者常量或具体的数值操作符:将参与运算的量连接起来的符号表达式:由操作数和操作符构成且符合python语法规范的式子,不同的操作符可以......
  • #Js篇: 链式判断运算符 ?.和Null判断运算符 ??和逻辑赋值运算符||= &&= ??=
    链式判断运算符?.?.运算符,直接在链式调用的时候判断,左侧的对象是否为null或undefined。如果是的,就不再往下运算,而是返回undefined。链判断运算符?.有三种写法。obj?.prop//对象属性是否存在obj?.[expr]//同上func?.(…args)//函数或对象方法是否存在下面是obj?......
  • 运算符的应用
    '''运算符的应用:1.基本加减乘除2.赋值3.比较4.逻辑6.成员运算符'''#加减乘除#字符串的加法:两个字符串拼接#数字加字符串,报错#list加法:将多个list合并为一个#减法操作:只支持Number类型的运算#乘法操作,*'''1.number类型的乘法2.str*int:str重复int次'''......
  • 【嵌入式C语言】常用关键字及运算符操作
    常用关键字及运算符操作关键字杂项sizeofreturn数据类型charint进制表示long、shortunsigned,signedfloat、doublevoid自定义数据类型structunionenumtypedef逻辑结构类型修饰符【重点】掌握C语言的常用关键字及其应用场景,使用技巧掌握位运算的典型操作掌握常用......