了解 C# 二进制 OR 操作符
C# 中的二进制操作对于处理位操作至关重要,尤其是在处理标志、权限和底层数据处理时。 基本的二进制运算符之一是 OR( |) 运算符。 在他的视频 Binary in C#:10 分钟以内的二进制 OR 操作符中,Tim Corey 详细介绍了 C# 中二进制 OR 操作符的工作原理及其实际应用。 让我们一步步来看看他的解释。
二进制 OR 运算符简介
Tim 在视频的开头继续讲述他对 C# 中二进制操作的理解。 本课是该系列的第五课,主要介绍 OR 运算符。 他设置了一个基本场景,其中有两个整数值,Val1 和 Val2,以二进制格式表示。 这些值被打印在控制台上,以便清晰直观地显示它们在二进制中的样子。
了解位操作 OR.
此时,Tim 解释了 OR 运算符在二进制比较中的作用。 他解释说,OR 运算符比较两个二进制值在相应位置上的每一位。 如果任一位是 1,则该位置的结果将是 1。 如果两位都是 0,则结果将是 0。
为了证明这一点,他以比较两个值为例进行了说明:
Val1 = 1101(二进制表示)Val2 = 0010(二进制表示)
Tim 强调,如果任一值在每个位位置上有 1,则结果位将是 1。 否则,它将保持为 0。
Implementing OR in C
Tim 开始编写执行 OR 操作的实际代码。 他使用单管()将 OR 操作的结果赋值给一个新变量。|) 运算符:
// Define two binary values as integers
int Val1 = 0b1101; // Binary representation: 1101
int Val2 = 0b0010; // Binary representation: 0010
// Perform the bitwise OR operation
int result = Val1 | Val2;
// Print the result to the console
Console.WriteLine(Convert.ToString(result, toBase: 2)); // Output: 1111 in binary// Define two binary values as integers
int Val1 = 0b1101; // Binary representation: 1101
int Val2 = 0b0010; // Binary representation: 0010
// Perform the bitwise OR operation
int result = Val1 | Val2;
// Print the result to the console
Console.WriteLine(Convert.ToString(result, toBase: 2)); // Output: 1111 in binary解释
- 这些二进制值是使用
0b前缀定义的,这有助于在 C# 中直接输入二进制。 - 位或操作的结果存储在
result变量中。 Convert.ToString(result, toBase: 2)将整数结果转换为表示其二进制格式的字符串,以便显示。
Tim 在这里做了一个重要的区分:在 if 语句内的逻辑表达式中,我们使用 || for logical OR, whereas in bitwise operations, we use a single `|对单个位进行操作。
理解输出
运行 OR 操作后,Tim 会将结果打印到控制台。 译文要演示 OR 如何在位级上工作:
1101|0010 = 1111
结果中的每个位遵循规则:如果 Val1 或 Val2 中有一个 1,结果为 1。 这清晰直观地展示了 OR 如何组合两个二进制数。
修改输入值
为了加强这个概念,Tim 修改了 Val2,以查看 OR 操作符对不同输入的反应。 他将 Val2 更改为 1010 并再次运行该操作。 翻译结果与 OR 逻辑保持一致:
1101|1010 = 1111
Tim 指出,只要至少一个数字在给定位置有 1,该位置的结果也将是 1。
逻辑 OR 与位操作 OR 的比较
Tim 简要地重温了逻辑 OR( ||) and bitwise OR (|)。 逻辑 OR 用于布尔条件,如
// Example of logical OR in a conditional statement
if (condition1 || condition2)
{
// Execute if either condition1 or condition2 is true
}// Example of logical OR in a conditional statement
if (condition1 || condition2)
{
// Execute if either condition1 or condition2 is true
}另一方面,正如本课所示,位wise OR 用于位级的二进制操作。
位操作 OR 的实际应用
最后,Tim 讨论了一些实际场景,在这些场景中位操作 OR 非常有用。 其中一个常见用例是使用基于标志的设置。 例如,如果您将不同的权限标志存储为二进制值,则可以使用 OR 将它们有效地组合起来。
例如,在基于标志的系统中:
READ_PERMISSION = 0001WRITE_PERMISSION = 0010EXECUTE_PERMISSION = 0100
如果用户同时需要读取和写入权限,我们可以使用 OR 将它们结合起来:
// Define permission flags as constants
const int READ_PERMISSION = 0b0001;
const int WRITE_PERMISSION = 0b0010;
// Combine read and write permissions using bitwise OR
int userPermissions = READ_PERMISSION | WRITE_PERMISSION; // Result: 0011
// Print the user permissions in binary
Console.WriteLine(Convert.ToString(userPermissions, toBase: 2)); // Output: 0011// Define permission flags as constants
const int READ_PERMISSION = 0b0001;
const int WRITE_PERMISSION = 0b0010;
// Combine read and write permissions using bitwise OR
int userPermissions = READ_PERMISSION | WRITE_PERMISSION; // Result: 0011
// Print the user permissions in binary
Console.WriteLine(Convert.ToString(userPermissions, toBase: 2)); // Output: 0011Tim 强调,在处理此类标志组合时,OR 特别有用,而且不会影响现有值。
最后的想法
视频结束时,Tim 总结了要点:
- 位向 OR(
|) 比较两个数字中的相应位。 - 如果任一位是
1,结果是1。 - 该运算符常用于有效组合标志和设置。
- 它不同于逻辑 OR(
||), 用于布尔表达式。
通过跟随 Tim 的解释和示例,我们可以扎实地了解二进制 OR 运算符在 C# 中的工作原理,以及在哪些地方可以有效应用。



