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
运算拆解:
- 首先将两个操作数转换为二进制对齐:
- 十进制5 → 二进制
101 - 十进制3 → 二进制
011
- 十进制5 → 二进制
- 逐位执行按位与运算:
101 (5的二进制) & 011 (3的二进制) ------ 001 (运算结果,对应十进制1) - 将结果1赋值给x,最终输出1。
关于你提到的“提取最后一位bit”的说明
你观察到十进制10(二进制1010)运算后得到0的场景,本质是和右操作数1做按位与的效果,流程如下:
1010 (10的二进制) & 0001 (1的二进制) ------- 0000 (运算结果,对应十进制0)
因为1的二进制只有最后一位是1,其他位都是0,和任何数做按位与运算时,其他位都会被置为0,只会保留原数最后一位的运算结果,所以会呈现出“提取最后一位bit”的效果,这是右操作数为1时的特殊效果,而非&=运算符本身的固定行为。
内容的提问来源于stack exchange,提问作者Gustav Berg
相关产品推荐
相关产品推荐

