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

其他类别

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

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)
// Original binary value
0b1101 // (which is 13 in decimal)

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

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

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

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

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

步骤分解:

1.原始值:

   0b1101
   0b1101

2.掩码:

   0b0101
   0b0101

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

   0b1010
   0b1010

4.执行和操作:

// Perform AND operation to clear specific bits
0b1101 // Original value
AND
0b1010 // Negated mask
= 0b1000 // Result, which is 8 in decimal
// 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 的视频中涉及的关键概念进行结构化分解。 如需更深入了解,强烈建议观看完整视频!

Hero Worlddot related to C# 中的位屏蔽:理解掩码和清除位
Hero Affiliate related to C# 中的位屏蔽:理解掩码和清除位

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

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

钢铁支援团队

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