请求详解C#中&=赋值运算符的位运算步骤及数学逻辑
C# 按位与运算代码详解
先看你给出的代码:
using System; namespace MyApplication { class Program { static void Main(string[] args) { int x = 5; x &= 3; Console.WriteLine(x); } } }
核心运算解析
代码里的x &= 3是按位与复合赋值运算符,等价于x = x & 3,所有位运算都是在二进制层面逐位操作的,具体步骤如下:
转换为二进制
- 十进制的5,二进制表示(取8位有效位,高位补0):
00000101 - 十进制的3,二进制表示:
00000011
- 十进制的5,二进制表示(取8位有效位,高位补0):
逐位执行按位与操作
按位与的规则是:对应二进制位都为1时,结果位为1;只要有一个为0,结果位为0。逐位对比计算:- 第0位(最右侧):
1 & 1 = 1 - 第1位:
0 & 1 = 0 - 第2位:
1 & 0 = 0 - 更高位都是
0 & 0 = 0
- 第0位(最右侧):
转换回十进制
计算后的二进制结果是00000001,对应的十进制就是1,这就是控制台输出的结果。
背后的数学逻辑
按位与运算a & b的本质是保留a中与b二进制位为1的位置对应的位,其余位清零。
这里3的二进制是11(最后两位为1),所以5 & 3其实是取5的最后两位二进制值。5的最后两位二进制是01,对应十进制1,所以结果为1。这种操作常用来提取数值的低n位(n是b的二进制中连续1的位数,比如3是2位,对应提取低2位)。
内容的提问来源于stack exchange,提问作者Tatiana Saltykova
相关产品推荐
相关产品推荐

