为什么将位掩码称为“掩码”,它们的作用是什么?


79

为什么这样称呼“位掩码”?

我知道它们主要用于按位运算,并且位掩码的使用比单独变量的使用更为有效。

但是,我的问题是,为什么以及何时发明了口罩?从早期计算开始就使用它们吗?除了IT域中的位掩码之外,还有其他类型的“掩码”吗?


14
光刻(使用紫外线将特征蚀刻到硅片中)使用“光掩模”有选择地阻挡紫外线光源,从而使硅的曝光区域具有正确的图案。
李维


1
消歧

14
曾经做过油漆工作并用过胶带吗?
gnasher729

1
另一种类型的蒙版:像素完美碰撞检测仅用于检测2D蒙版重叠。
aluriak

Answers:


101

面膜(多种面部)遮盖住脸部的某些部分,并让其他部分露出来。该术语在计算中被类比使用:位掩码掩盖(过滤掉)位集中的某些位,并允许其他位通过。

除了IT域中的位掩码之外,还有其他类型的“掩码”吗?

面具就在我的头顶上,在图像处理中经常使用。这是一个类似的概念:您创建一个黑白图像,显示要掩盖的东西和允许穿过的东西的形状。


33
子网掩码也很常见
Matthieu M.

38
@MatthieuM。但是子网掩码不是位掩码吗?它们用于过滤网络地址和主机地址。
yoyo_fun

22
@JenniferAnderson黑白图像也不只是像素位掩码吗?
Bergi

8
物理图像掩膜用于硅芯片生产中,是从传统摄影和工艺印刷演变而来的技术的一部分。 en.wikipedia.org/wiki/Photolithography
Jander

20
遮罩也是一个艺术术语,用于保护一个区域不被更改而允许另一个区域被更改。它经常在绘画中使用。这就是美纹纸胶带的用途:因此,您无需在不想油漆的东西上油漆,而仍然可以在想要油漆的东西上油漆。
Nate Diamond

54

位掩码用于在公开其他位时掩盖位字段的某些位:

initial value: 011011001
bit mask.....: 111110000
result value.: 011010000

在具有逻辑门(AND,OR ...)或晶体管的电子产品或具有继电器的机电产品中进行计算之前,已使用此方法。


6
“位掩码用于在公开其他位时掩盖位字段的某些位:”我从来没有这样想过,但确实很有意义。谢谢您的解释:)
yoyo_fun

1
@mouvicel您能给我指出一些有关在具有逻辑门的电子设备中如何使用位掩码的链接。目的是什么?此操作用于哪种系统?该技术何时开始?
yoyo_fun

4
需要说明的是:初始值与掩码进行“与”运算,因此只有“ 1”处的掩码位将原始位与初始值保持不变(按位,“ 1和1 = 1”以及“ 0和1 = 0” ),并将初始值的其他位设置为0(按位)“ 0和0 = 0”以及“ 1和0 = 0”))(因为“与”表示“仅当第一位与第二位位设置为1,结果为1。所有其他结果为0”。(或表示:如果第1位为1或第2位为1,则结果为1。等等。请参见en.wikipedia。 org / wiki /…
Olivier Dulac

2
@JenniferAnderson:除了逻辑位掩码外,电子中还使用实际的掩码:阻焊层是一种模板(一张卡),用于将焊膏沉积到PCB上。您将掩模放在PCB上,用吸水扒将焊料膏涂抹在掩模上,然后掩模上的孔将使掩模通过,以仅准确覆盖所需的焊料膏区域(youtube.com/watch?v=EqJN1CTCOQs) 。在芯片制造中,掩模用于在硅上建立或蚀刻结构。单词“遮罩”的这种使用来自印刷行业。
slebetman

4
@JenniferAnderson:英文中的“遮罩”一词用于掩盖某些内容比较笼统,而且年龄可能更大。例如,在英语中,我们说香水可用于掩盖难闻的气味。
slebetman

39

位掩码非常老。我没有找到第一个参考,但是它们肯定在8位处理器问世时就很流行,并且很可能也用在4位处理器中。

位掩码背后的想法是利用按位并行性。如果将8位计算机打包到一个本地字中(这意味着它可以放入寄存器中),则一次可以对8位进行相同的按位运算。

名称来自遮罩,这是掩盖您不想与之交互的区域的通用方法。例如,考虑使用该模板遮盖墙的区域(在绘画后已移动模板以显示图案)

模板

蒙版也用于摄影中,用“闪避”代替“模板”。您可以在打印过程中使用遮罩使部分光线模糊以减轻区域的亮度。

摄影面具

该术语也直接用在光刻中,光刻是用于制造集成电路的技术。掩模防止光到达涂在芯片上的光致抗蚀剂,从而形成图案,这些图案随后导致芯片上的迷人图案。(下图是您好奇的Intel 8080A处理器的遮罩之一)

光刻掩模

同样,在位屏蔽中,您要选择要操作的字的部分,以屏蔽所有其余位。在下面的示例中,我使用“和”运算来屏蔽输入,以便仅显示第3、4和8位。其余的被“屏蔽”,因此它们为0。我用的口罩是00110001。我在下面用#0和.1 表示它,因为这使位掩码的视觉外观与上面的物理掩码相似,并且我显示了“选择的位”行,该行显示了输出中未被掩码的位( “选择的位”实际上并不是发生的逻辑操作……处理器实际上一步一步就从输入和掩码转到输出,但是我认为它可以澄清视觉图像)

Input          10010111
Mask           ##..###.  (aka 00110001)
-----------------------
(selected)       01   1
Input AND Mask 00010001

正如我所提到的,位屏蔽的历史非常悠久,因为它极大地提高了处理器的生产率。在4位处理器上,它可使处理器快4倍。在8位处理中,或者可以使其速度提高8倍(当然,仅在按位操作中)。

一种引人入胜的用途是国际象棋引擎。国际象棋棋盘有64个正方形。现代引擎具有64位整数。这是非常方便的运气,因此国际象棋引擎经常利用它。它们具有包含片段位置的所谓“位 ”。这使您可以进行各种优化,例如一步查找所有棋子移动。


33

面具是英语中最普通的用法,它是一种隐藏东西的装置。丝网印刷是另一个答案。涂胶带“遮盖”某些东西以避免在其上沾上油漆,等等。PC板上的阻焊剂“遮盖”待焊接的区域与未焊接的区域。

在“位屏蔽”的情况下,某些位被“隐藏”或忽略,以便可以更轻松地操纵或简单地查看其他更受关注的位。

据我所知,最早的处理器中,位屏蔽不仅是一种“古老”的技术,而且在大多数(即使不是全部)机器指令中也是一种原始操作。通常,这是以“使用此寄存器中的位模式来掩盖某些其他寄存器中的位”的形式。


12
我还没有听说过“胶带”一词。我假设这就是我所说的“遮盖胶带”。
thelem

12
@thelem:术语“遮盖胶带”,至少在美国是指易于撕裂的布基胶带。用于绘画时,它会产生一些“模糊”的边缘。因为这样的胶带用于许多其他目的,所以较新的胶带(其价格更高,但更昂贵,并且可能不太适合其他用途)被称为“画家胶带”。
超级猫

2
@Barmar任何去过五金店涂装部分的人都会遇到他们。
chrylis-罢工-17年

5
我不是画家,我知道画家的胶带和美纹纸胶带是两种非常不同的胶带。也许只是说“掩膜胶带是一种由于其不透明而易于书写的胶带”。
valbaca

2
我尝试搜索本地(澳大利亚)巨型硬件商店的网站,发现“绘画胶带”的第一匹配项是标有“遮蔽胶带”的产品,所以我想就是这样。;)我怀疑地区之间的旧术语有很好的区别。人们真的很挑剔,视他们居住的地方而定。
Trejkaz

10

位掩码类似于丝网印刷。您选择一些特定的位位置以接管结果:

source value = 42 -> 00101010b
mask = 51 -> 00110011b
result 42&51 = 00100010b -> 34

掩码的另一含义是图形用户界面中的页面,用户可以在其中输入数据。


3

发明位屏蔽的原因有两个:

  • 硬件寄存器被映射到一组连续的位
  • 在不远的过去,内存空间非常有限

当您查看如何查看位模式时,您将通过“或”操作将其打开或将“与”操作将其关闭。

最常见的遮罩(基于位遮罩)是图像遮罩(请参阅我开头包含的链接)。


2
bool与将每个标志放在单独的字节中的数组或其他某种方法相比,标志值的位图仍然是传递一组标志的一种合适且更有效的方法。这样就可以有效地执行诸如if (x & (FLAG_A | FLAG_B))代替等操作if (xflags[FLAG_A] || xflags[FLAG_B])。尤其是在掩码不是常数的情况下;能够通过一个掩模作为整数是多少要比通过标志的列表进行检查便宜。因此,即使内存和缓存不受限制,在某些情况下使用位集和掩码仍然会更加高效。
彼得·科德斯

从来没有说过它仍然没有用。只是说起源起源于处理硬件寄存器和有限的内存。当它们适合该问题时,我仍然使用位掩码。
Berin Loritsch

1
我的意思是说,起源可能与旧的慢速计算机上的内存和性能相同。
彼得·科德斯

1
同意 对Commodore 64进行编程后,您还需要了解位掩码,以处理图形,声音,串行和并行I / O。控制器芯片映射到内存地址,而引脚映射到该地址内的位。我猜您可能会争论位掩码是否影响了硬件接口,反之亦然。无论哪种方式,您都必须了解它们才能完成任何有用的事情。
Berin Loritsch

@BerinLoritsch谢谢您的回答。您能解释一下“硬件寄存器被映射到一组连续的位”是什么意思吗?硬件寄存器不是彼此独立访问的吗?
yoyo_fun

3

IT中的另一种物理掩模是用于仅蚀刻掉一部分硅晶片的光刻光掩模。那不是用来制造最早的计算机的,但是在过去的五十年中从事该行业的任何人都会意识到这一点。

我不知道确切的术语“位掩码”何时出现,但是操作本身只是按位的,这是每台二进制计算机的基本指令。


+1表示“每个二进制计算机中的基本指令”。人们需要知道电脑什么,为什么他们是这样的。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.