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

C#中&=按位与赋值运算符的运行原理及运算过程是怎样的?

&= 运算符运行逻辑说明

首先明确:&= 是按位与复合赋值运算符,运算逻辑等价于 左操作数 = 左操作数 & 右操作数,其中&是按位与运算符。

按位与运算规则

对两个整数的二进制每一位逐位比较:

  • 对应位都为1时,结果的该位为1
  • 只要有一个数的对应位为0,结果的该位就为0

你提供的代码示例运算流程

using System;

namespace MyApplication
{
  class Program
  {
    static void Main(string[] args)
    {
      int x = 5;
      x &= 3;
      Console.WriteLine(x);  
     }
  }
}
// 输出结果:1

运算拆解:

  1. 首先将两个操作数转换为二进制对齐:
    • 十进制5 → 二进制 101
    • 十进制3 → 二进制 011
  2. 逐位执行按位与运算:
    101 (5的二进制)
    & 011 (3的二进制)
    ------
      001 (运算结果,对应十进制1)
    
  3. 将结果1赋值给x,最终输出1。

关于你提到的“提取最后一位bit”的说明

你观察到十进制10(二进制1010)运算后得到0的场景,本质是和右操作数1做按位与的效果,流程如下:

1010 (10的二进制)
& 0001 (1的二进制)
-------
  0000 (运算结果,对应十进制0)

因为1的二进制只有最后一位是1,其他位都是0,和任何数做按位与运算时,其他位都会被置为0,只会保留原数最后一位的运算结果,所以会呈现出“提取最后一位bit”的效果,这是右操作数为1时的特殊效果,而非&=运算符本身的固定行为。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:18:01