为什么“小口罩”叫成这样?
我知道它们主要用于按位运算,使用位掩码比使用单独的变量更有效。
然而,我的问题是,为什么以及什么时候发明了比特面具?它们是从早期计算开始使用的吗?IT领域除了比特掩码之外,还有其他类型的“掩码”吗?
发布于 2017-09-26 04:16:58
面罩(五颜六色的面罩)是用来遮住脸部的某些部分,并让其他部分显示出来的东西。在计算中,这个术语是通过类推使用的:位掩码掩盖(过滤掉)位集中的一些位,并允许其他位元通过。
IT领域除了比特掩码之外,还有其他类型的“掩码”吗?
就在我的头顶,面具是经常使用的图像处理。这是一个类似的概念:你创建了一个黑白图像,它显示了要遮掩什么和让什么通过的形状。
发布于 2017-09-26 04:21:25
位掩码用于掩盖位字段的某些比特,同时公开其他比特字段:
initial value: 011011001
bit mask.....: 111110000
result value.: 011010000
在有逻辑门的电子计算中(和,或.)之前,这已经被使用了。或晶体管或继电器的电力学中。
发布于 2017-09-26 09:08:11
比特面具太老了。我还没有找到对第一个处理器的引用,但它们肯定是8位处理器的出现所流行的,而且可能也被用于4位处理器中。
位掩码背后的想法是利用位并行性。一台8位计算机可以同时对8位进行相同的位操作,如果它们被打包到一个本地单词中(这意味着它适合一个寄存器)。
这个名字来自掩蔽,这是一种通常的方法来掩盖你不想与之交互的地方。例如,考虑一下这个模板可以屏蔽墙壁的区域(在油漆之后,模板已经被移动以显示图案)。
在摄影中,口罩也是用“躲避”而不是“模板”来形容的。在印刷过程中,你可以用面罩遮住一些光线,使区域变亮。
这个术语也直接用于光刻,这是用来制作集成电路的技术。遮罩阻止光线到达涂在芯片上的光刻胶,这就产生了后来导致芯片上的合成图案的图案。(下面的图片是英特尔8080A处理器的面具之一,如果您有兴趣的话)
同样,在位掩蔽中,您选择要操作的单词的各个部分,将其余的部分屏蔽掉。在下面的示例中,我使用" and“操作来屏蔽输入,这样只有第3、4和8位显示。其余的都是“蒙面”,所以他们是0's。我使用的面具是00110001
。我在下面显示它,#
表示0,.
表示1,因为这使得位掩码的视觉外观类似于上面的物理掩码,并显示了一个“选定位”行,它显示了输出中没有屏蔽的位(“选定位”实际上不是发生的逻辑操作……处理器实际上是从输入和掩码到输出的一个步骤,但我认为它澄清了视觉图像)
Input 10010111
Mask ##..###. (aka 00110001)
-----------------------
(selected) 01 1
Input AND Mask 00010001
正如我提到的,比特掩蔽是非常古老的,因为它极大地提高了处理器的生产力。在4位处理器上,它可以使处理器速度提高4倍。在一个8位进程上,或者它可以使它快8倍(当然,仅在按位操作时)。
其中一个有趣的用途是国际象棋引擎。棋盘有64个正方形。现代引擎有64位整数。这是一个非常方便的运气,所以象棋引擎经常利用它。他们有所谓的"咬板“,其中包含了片段的位置。这允许您进行各种优化,例如在一个步骤中查找所有典当移动。
https://softwareengineering.stackexchange.com/questions/358068
复制