IRONSOFTWAREHOME

C# 中的位屏蔽:理解掩码和清除位

C# 二进制:10 分钟内完成掩码和清除位

Tim Corey

7m 56s

二进制操作是编程中的一个强大工具,尤其是在处理底层优化和位操作时。 二进制操作的基本技术之一是位掩码,它允许我们有效地操作数值中的单个位。 在本文中,我们将跟随 Tim Corey 的视频 Binary in C# 深入学习 C# 中的位屏蔽:10 分钟内屏蔽和清除位

Tim 分解了位屏蔽的概念,并演示了如何设置屏蔽、如何使用 NOT 运算符移除位,以及为什么位操作对性能至关重要。 让我们参考视频中的要点,逐步探讨这些概念。

简介

Tim 在视频开头介绍了位操作这一主题。 他解释说,本课是关于理解 C# 中二进制的更广泛系列课程的一部分。 本视频的重点是 使用掩码清除位,这是一项基本技术,可用于权限处理、标记管理和性能优化等各种应用中。

他还提醒观众,理解二进制操作至关重要,因为计算机从根本上说是以二进制方式运行的。 直接操作比特可以带来高度优化和高效的代码。

掩码:设置位掩码

Tim 解释了如何设置掩码以及掩码为何有用。 掩码是一种二进制数值,有助于修改或提取另一数值的特定位。 为了证明这一点,他提供了一个例子,说明他想从给定的数字中删除某些位。

他从二进制值开始:

// Original binary value
0b1101 // (which is 13 in decimal)

然后,他决定删除特定位,如第三位和第一位。 为了实现这一目标,他创建了一个掩码,指明哪些比特应被删除:

// Mask to specify bits to be cleared
0b0101 // (mask value)

然后,Tim 解释说,将此掩码应用到原始值需要进行逻辑 AND 操作,即掩码的否定操作。 这样既能有效清除指定的部分,又能保持其他部分的完整。

不屏蔽:使用 NOT 操作符清除位

为了删除指定的位,Tim 引入了 NOT (~) 操作符。 他解释说,对掩码应用 NOT 会翻转其所有位,创建一个补码,然后用于 AND 运算。

步骤分解:

1.原始值:

0b1101

2.掩码:

0b0101

3.否定掩码(~掩码):

0b1010

4.执行和操作:

// Perform AND operation to clear specific bits
0b1101 // Original value
AND
0b1010 // Negated mask
= 0b1000 // Result, which is 8 in decimal

Tim 强调,逻辑 AND 运算确保只有未被掩码标记的位保持不变,从而有效清除指定位。

如果这个概念看起来令人困惑,Tim 向观众保证,可以先记住规则,然后通过练习加深理解。他建议大家尝试使用不同的值和遮罩,以便更自如地掌握这项技术。

为什么理解 AND 和 NOT 至关重要

在这一点上,Tim 强调了完全掌握 AND (&) 和 NOT (~) 操作的重要性。 许多初学者往往会跳过这些概念,或者认为自己已经理解了这些概念,但他警告说,如果不能掌握这些操作,就会使复杂的位操作变得更加难以理解。

他的建议很简单:不要仅仅认为自己理解 AND 和 NOT。 练习它们。 对不同的值和掩码进行的实验越多,就越容易自信地使用位操作。

位操作的性能优势

Tim 强调了在性能关键型应用程序中广泛使用位操作(包括屏蔽)的一个重要原因。 由于计算机处理数据的最底层是二进制,因此位操作本质上是快速高效的。

本节的一些主要内容:

  • 硬盘或内存中存储的所有内容都是二进制格式。
  • 比特运算只需翻转比特,就能以迅雷不及掩耳之势进行数据操作。
  • 使用比特掩码比使用传统的条件语句或循环要有效得多。
  • 在大规模工作时,使用位操作可以大大减少计算开销,使应用程序运行得更快、更高效。

Tim 在本节的最后强调,理解二进制操作不仅是一项学术练习,也是一项实用技能,它可以使代码更加优化、性能更强。

最后的想法

在本视频中,Tim Corey 对 C# 中的位屏蔽进行了清晰实用的解释。 我们学到了

  • 如何创建和使用位掩码来操作数值中的特定位。
  • NOT (~) 运算符如何帮助有效清除位。
  • 为什么必须理解 AND (&) 和 NOT (~) 操作。
  • 位操作如何有助于优化计算性能。

如果有些概念一开始看起来很棘手,不要担心,Tim 建议多加练习,直到它们成为第二天性。 比特运算最初可能具有挑战性,但掌握了比特运算,就打开了编写更高效、更优化代码的大门。

如果您想深入了解二进制操作,Tim 还有更多相关视频。 不断练习,不断尝试,很快 C# 中的位操作就会像第二天性一样。

本文旨在对 Tim 的视频中涉及的关键概念进行结构化分解。 如需更深入了解,强烈建议观看完整视频!

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 天试用密钥
无需信用卡或创建账户