You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否使用掩码的XOR运算而非对掩码取反来修改第i位比特?

关于使用XOR运算修改指定位比特的解答

可以通过搭配掩码的XOR运算直接修改第i位比特,无需对掩码执行取反(~)操作,该方案适用于「翻转指定位」的场景,你给出的Java代码是完全正确的实现:

public class xor {
    public static void main(String[] args) {
        int n = 46;
        int i = 2;
        int mask = 1<<i;
        System.out.println(n^mask); 
    }
}

这段代码的运行逻辑是:

  1. 生成掩码mask = 1 << i,得到仅第i位为1、其余所有位为0的数值
  2. 原数n和mask做XOR运算时,仅第i位会和1运算发生翻转(0变1、1变0),其余位和0运算保持原值不变,最终得到仅修改了第i位的结果

你可以根据自己的实际修改需求选择不同的位操作方案,仅特定场景需要用到掩码取反:

  • 翻转第i位(切换指定位状态):n ^ (1 << i),无需取反操作
  • 强制将第i位设为1:n | (1 << i),无需取反操作
  • 强制将第i位设为0:该场景才需要对掩码取反,实现为n & (~(1 << i))

内容的提问来源于stack exchange,提问作者Sourabh Rananaware

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 22:09:03