0Pricing
C# Academy · 课时

位运算与移位运算符

使用 &、|、^、~ 和移位运算操作位。

位运算与移位运算符 是 CoddyKit 上的免费 C# Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C# Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C# Academy 课程共包含 4 节课。

位与二进制

整数以位的形式存储。位运算符会操作这些独立的位。C# 提供了 &、|、^、~、<< 和 >>。

using System;

class Program {
    static void Main() {
        int x = 5;
        Console.WriteLine(Convert.ToString(x, 2));
    }
}

按位 AND:&

只有当两个位都是 1 时,& 才会将该位设置为 1。5 & 3 会比较 101 和 011,得到 001 = 1。

using System;

class Program {
    static void Main() {
        Console.WriteLine(5 & 3);
        Console.WriteLine(12 & 10);
    }
}

按位 OR:|

当任意一个位为 1 时,| 会将该位设置为 1。5 | 3 得到 111 = 7。

using System;

class Program {
    static void Main() {
        Console.WriteLine(5 | 3);
        Console.WriteLine(8 | 1);
    }
}

按位 XOR:^

当两个位不同时,^ 会将该位设置为 1。5 ^ 3 得到 110 = 6。

using System;

class Program {
    static void Main() {
        Console.WriteLine(5 ^ 3);
        Console.WriteLine(7 ^ 7);
    }
}

按位 NOT:~

~ 会翻转每一位。由于采用二补码表示法,~n 等于 -(n + 1)。

using System;

class Program {
    static void Main() {
        Console.WriteLine(~5);
        Console.WriteLine(~0);
    }
}

左移:&lt;&lt;

<< 会将各个位向左移动,并在右侧补零。每左移一位,值就会扩大一倍:1 << 3 等于 8。

using System;

class Program {
    static void Main() {
        Console.WriteLine(1 << 3);
        Console.WriteLine(5 << 1);
    }
}

右移:&gt;&gt;

>> 会将各个位向右移动。对于正数,每右移一位,值就会减半:20 >> 2 等于 5。

using System;

class Program {
    static void Main() {
        Console.WriteLine(20 >> 2);
        Console.WriteLine(8 >> 1);
    }
}

位掩码

掩码可以隔离特定位。将值与掩码执行 AND 运算,即可只保留这些位。

using System;

class Program {
    static void Main() {
        int value = 0b1011;
        int mask = 0b0110;
        Console.WriteLine(value & mask);
    }
}

设置和清除位

使用 | 和单个位掩码可以设置某一位,使用 & 和反转后的掩码可以清除某一位。

using System;

class Program {
    static void Main() {
        int flags = 0;
        flags |= (1 << 2);
        Console.WriteLine(flags);
        flags &= ~(1 << 2);
        Console.WriteLine(flags);
    }
}

检查某一位

要检查某一位是否已设置,请将值与该位的掩码执行 AND 运算,并与非零值进行比较。

using System;

class Program {
    static void Main() {
        int flags = 0b0100;
        bool isSet = (flags & (1 << 2)) != 0;
        Console.WriteLine(isSet);
    }
}

使用移位快速乘法

移位是乘以或除以 2 的幂的一种快速方式,常用于对性能敏感的代码。

using System;

class Program {
    static void Main() {
        int n = 7;
        Console.WriteLine(n << 2);
        Console.WriteLine(n >> 1);
    }
}

快速检查

请测试您对位运算的了解。

回顾

位运算符逐位工作:& 表示 AND,| 表示 OR,^ 表示 XOR,~ 表示 NOT。移位运算符 << 和 >> 会将各个位向左或向右移动,相当于乘以或除以 2 的幂。

借助掩码,您可以设置、清除和检查单个位,这是处理标志和底层数据的基础。

常见问题解答

「位运算与移位运算符」课时是免费的吗?

是的 — 「位运算与移位运算符」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 C# Academy 课程的其余内容,请升级到 CoddyKit PRO。 C# Academy 课程共包含 4 节课。

「位运算与移位运算符」这节课中我会学到什么?

使用 &、|、^、~ 和移位运算操作位。 你通过在浏览器中直接运行的动手代码来练习 C# Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 C# Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 C# Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「位运算与移位运算符」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 C# Academy 课中编写并运行代码吗?

能。每节 C# Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 算术与赋值运算符
  2. 比较与逻辑运算符
  3. 位运算与移位运算符
  4. 运算符优先级与结合性
← 返回 C# Academy