|= 和 &= ~

 

private int mFlags;
    public void setUserFixed(boolean userFixed) {
        if (userFixed) {
            mFlags |= PackageManager.FLAG_PERMISSION_USER_FIXED;
        } else {
            mFlags &= ~PackageManager.FLAG_PERMISSION_USER_FIXED;
        }
    }

    public boolean isSystemFixed() {
        return (mFlags & PackageManager.FLAG_PERMISSION_SYSTEM_FIXED) != 0;
    }

 

 

转载于:https://www.cnblogs.com/onelikeone/p/9312073.html

### 按位运算符 `&=`, `~` `|=` 的用法区别 #### 使用场景与功能描述 按位运算符用于执行二进制级别的操作,在编程中有多种用途,比如优化性能、处理硬件控制以及实现特定算法[^1]。 对于具体的三个运算符: - **`&=` 运算符**:此运算符表示将两个数值对应的每一位做逻辑与(AND)之后赋给左侧变量。它能够保留原数中对应位置上都为1的地方不变,其余置零。这通常用来清除某些特定位上的值而不影响其他部分的数据[^2]。 ```cpp int flags = 0b1101; int mask = 0b0100; flags &= ~mask; // 结果为 0b1001 (9), 清除了第三位(从右往左计数) ``` - **`~` 运算符**:这是一个一元取反运算符,作用于单个整型数据对象之上,会将其所有的比特位翻转——即将原来的每一个'0'变为'1','1'变成'0'。 ```cpp unsigned char byte = 0b0101; byte = ~byte; // 结果取决于具体平台,假设8位则结果为 0b1010 ``` - **`|=` 运算符**:该运算符意味着对两侧的操作数按照各自相应的位置进行或(OR)计算后再把结果存入左边的操作数里边去。这样可以设置指定位置上的标志而不会改变其它未被提及的部分。 ```cpp int permissions = 0b0010; int newPermission = 0b0100; permissions |= newPermission; // 结果为 0b0110 (6),设置了第二位 ``` 通过上述例子可以看出这三个运算符各有侧重的应用领域;其中`&=`常用于屏蔽不需要关心的位;`~`负责反转整个字节序列中的所有位;而`|=`则是为了增加新的属性标记到现有状态之中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值