跳至页脚内容
Iron Academy Logo
学习 C#
学习 C#

其他类别

了解 C# 二进制 OR 操作符

Tim Corey
5m 54s

C# 中的二进制操作对于处理位操作至关重要,尤其是在处理标志、权限和底层数据处理时。 基本的二进制运算符之一是 OR( |) 运算符。 在他的视频 Binary in C#:10 分钟以内的二进制 OR 操作符中,Tim Corey 详细介绍了 C# 中二进制 OR 操作符的工作原理及其实际应用。 让我们一步步来看看他的解释。

二进制 OR 运算符简介

Tim 在视频的开头继续讲述他对 C# 中二进制操作的理解。 本课是该系列的第五课,主要介绍 OR 运算符。 他设置了一个基本场景,其中有两个整数值,Val1Val2,以二进制格式表示。 这些值被打印在控制台上,以便清晰直观地显示它们在二进制中的样子。

了解位操作 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

结果中的每个位遵循规则:如果 Val1Val2 中有一个 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 = 0001
  • WRITE_PERMISSION = 0010
  • EXECUTE_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: 0011

Tim 强调,在处理此类标志组合时,OR 特别有用,而且不会影响现有值。

最后的想法

视频结束时,Tim 总结了要点:

  • 位向 OR(|) 比较两个数字中的相应位。
  • 如果任一位是 1,结果是 1
  • 该运算符常用于有效组合标志和设置。
  • 它不同于逻辑 OR(||), 用于布尔表达式。

通过跟随 Tim 的解释和示例,我们可以扎实地了解二进制 OR 运算符在 C# 中的工作原理,以及在哪些地方可以有效应用。

Hero Worlddot related to 了解 C# 二进制 OR 操作符
Hero Affiliate related to 了解 C# 二进制 OR 操作符

分享您的所爱,赚取更多收入

您为使用 .NET、C#、Java、Python 或 Node.js 的开发人员创建内容吗?将您的专业知识转化为额外收入!

钢铁支援团队

我们每周 5 天,每天 24 小时在线。
聊天
电子邮件
打电话给我