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

请教C#中&=、|=、^=运算符对数值的运算逻辑

C#中数值类型的&=、|=、^=运算符解析

首先明确:当这些运算符作用于数值类型时,它们是按位运算符的复合赋值版本,逻辑是「先执行按位运算,再将结果赋值给左侧变量」,和你已知的单独按位运算符逻辑完全对应,只是合并了赋值操作。

一、&=:按位与赋值

x &= y 等价于 x = x & y,这里的&是按位与(不是逻辑与),规则是对两个数的二进制每一位进行与运算:只有当对应位都为1时,结果位才是1,否则为0。

拿你的测试例子拆解:

  • 当x=5,二进制是101;3的二进制是011
  • 按位与运算:
    101
    & 011
    -----
      001
    
  • 结果是二进制001,即十进制1,和你得到的输出一致。

再验证其他测试用例:

  • x=10(二进制1010)& 3(0011)= 0010(十进制2)
  • x=20(二进制10100)& 3(00011)= 00000(十进制0)

二、|=:按位或赋值

x |= y 等价于 x = x | y,|是按位或,规则是对应位只要有一个为1,结果位就是1。

例子:

int x = 5; // 二进制101
x |= 3;    // 101 | 011 = 111(十进制7)
Console.WriteLine(x); // 输出7

三、^=:按位异或赋值

x ^= y 等价于 x = x ^ y,^是按位异或,规则是对应位不同时结果为1,相同时为0。

例子:

int x = 5; // 二进制101
x ^= 3;    // 101 ^ 011 = 110(十进制6)
Console.WriteLine(x); // 输出6

总结:所有op=形式的复合赋值运算符,本质都是x = x op y。当op为&、|、^且操作数是数值时,执行的是按位运算,而非逻辑运算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 19:25:17