IRONSOFTWAREHOME

了解 C# 二进制 OR 操作符

C# 中的二进制:10 分钟或更短时间内掌握二进制 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

解释

  • 使用 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 来观察或运算符对不同输入的反应。 他将 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
}

另一方面,正如本课所示,位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

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

最后的想法

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

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

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

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

OR
bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户