Почему битовые маски называют «масками» и какой цели они служат?

79

Почему "битовые маски" называются так?

Я знаю, что они в основном используются для побитовых операций, и использование битовых масок более эффективно, чем использование отдельных переменных.

Однако мой вопрос: почему и когда были изобретены битовые маски? Были ли они использованы с ранних вычислений? Существуют ли другие типы «масок» помимо битовых масок в области ИТ?

yoyo_fun
источник
14
Фотолитография (использование ультрафиолетового света для травления элементов на кремниевых пластинах) использует «фотомаску», чтобы выборочно блокировать источник ультрафиолетового света, чтобы открытые участки кремния имели правильный рисунок.
Леви
1
Кроме того, различные из en.wikipedia.org/wiki/Mask_(disambiguation)
OrangeDog
14
Вы когда-нибудь делали малярные работы и использовали малярный скотч?
gnasher729
1
Еще один тип масок: идеальное пиксельное обнаружение столкновений - это обнаружение перекрытий 2D-масок.
aluriak

Ответы:

101

Маска (разнообразная для лица) - это то, что покрывает некоторые части вашего лица и позволяет другим деталям просвечивать. Терминология используется по аналогии в вычислениях: битовая маска скрывает (отфильтровывает) некоторые биты в битовом наборе и позволяет другим проходить.

Существуют ли другие типы «масок» помимо битовых масок в области ИТ?

Чуть выше головы, маски часто используются при обработке изображений. Это похожая концепция: вы создаете черно-белое изображение, которое показывает форму того, что нужно скрыть, а что пропустить.

Мейсон Уилер
источник
33
Маски подсетей также довольно распространены .
Матье М.
38
@MatthieuM. но не являются ли маски подсетей битовыми масками? Они используются для фильтрации сетевого адреса и адреса хоста.
yoyo_fun
22
@JenniferAnderson Разве черно-белое изображение - это не просто пиксельная битовая маска?
Берги
8
Маски физических изображений используются в производстве кремниевых чипов, как часть технологии, развившейся от традиционной фотографии и процесса печати. en.wikipedia.org/wiki/Photolithography
Jander
20
Маскирование также является художественным термином для защиты одной области от изменений, в то же время позволяя изменить другую. Это часто используется в живописи. Это то, для чего предназначена лента для маскировки: чтобы вы не рисовали на тех вещах, на которые вы не хотите рисовать, в то же время все еще пытаясь рисовать на тех вещах, на которые вы действительно хотите рисовать.
Нейт Даймонд,
54

Битовая маска используется для маскировки некоторых битов битового поля при демонстрации других:

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

Это использовалось перед вычислениями в электронике с логическими элементами (И, ИЛИ ...) или транзисторами или в электромеханике с реле.

mouviciel
источник
6
«Битовая маска используется для маскировки некоторых битов битового поля при демонстрации других:« Я никогда не думал об этом так, но это имеет большой смысл. Спасибо за объяснение :)
yoyo_fun
1
@mouvicel, не могли бы вы указать мне несколько ссылок о том, как битовые маски использовались в электронике с логическими элементами. Какова была цель, в каких системах использовались эти операции и когда началась эта техника?
yoyo_fun
4
уточнить: начальное значение равно AND с маской, и, таким образом, только биты маски в «1» сохраняют исходные биты из начального значения (как, поразрядно, «1 и 1 = 1» и «0 и 1 = 0» ), а другие биты начального значения устанавливаются в 0 как (поразрядно) «0 и 0 = 0» и «1 и 0 = 0») (потому что «И» говорит, что «только когда первый бит И 2-й бит установлен в 1, это результат 1. 1. все остальные результаты в 0 ". (ИЛИ означает: либо с 1-м битом это 1, ИЛИ 2-й бит равен 1, будет результатом 1. и т. д.). См. en.wikipedia. org / wiki /…
Оливье Дюлак
2
@JenniferAnderson: Помимо логических битовых масок в электронике используются настоящие маски: маска припоя - это трафарет (кусок карты), который используется для нанесения паяльной пасты на печатные платы. Вы кладете маску на печатную плату, с помощью ракеля намазываете паяльную пасту поверх маски, затем отверстия в маске пропускают пасту, чтобы точно покрыть только те области, которые вам нужны для паяльной пасты ( 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

В своем наиболее общем использовании на английском языке маска - это устройство, которое что-то скрывает. Трафаретная печать упоминается в другом ответе. Окрашивающая лента «маскирует» что-то, чтобы избежать попадания краски на нее и т. Д. Маска для пайки на печатной плате «маскирует» область, подлежащую пайке, с области, не подлежащей пайке.

В случае «маскирования битов» некоторые биты являются «скрытыми» или игнорируются, так что другие, представляющие больший интерес, можно легче манипулировать или просто просматривать.

Битовая маскировка - это не просто «старая» техника, это примитивная операция в большинстве, если не во всех машинных инструкциях, насколько я знаю из самых ранних процессоров. Обычно это в форме «использовать битовую комбинацию в этом регистре для маскировки битов в каком-либо другом регистре».

mickeyf
источник
12
Я не слышал термин "Живопись ленты". Я предполагаю, что это то, что я бы назвал "липкой лентой".
Тель
12
@thelem: Термин «липкая лента», по крайней мере, в США, относится к легко порванной ленточной ткани. Когда используется для рисования, он дает несколько «размытые» края. Поскольку такая лента используется для многих других целей, более новые ленты, которые лучше подходят для рисования (но являются более дорогостоящими и могут быть менее подходящими для других целей), называются «лентой художника».
суперкат
2
@ Barar Любой, кто пошел в секцию живописи хозяйственного магазина, столкнулся бы с ними.
Хрилис - на забастовке -
5
Я не художник, и я знаю, что лента художника и лента для маскировки - это два очень разных типа ленты. Возможно, просто сказать, что «Лента для маскировки - это тип ленты, который используется из-за своей непрозрачности и на него легко писать».
Вальбаке
2
Я попытался найти сайт местного (австралийского) гигантского магазина бытовой техники, и первым хитом «покраска ленты» стал продукт, помеченный как «лента для маскировки», так что я думаю, что это так. ;) Подозреваю, старые добрые терминологические различия между регионами. Люди очень разборчивы в том, что также считается клейкой лентой, в зависимости от того, где они живут.
Трейказ
10

Битовая маска похожа на трафаретную печать . Вы выбираете какую-то определенную битовую позицию, которая будет включена в результат:

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

Другое значение маски - это страница в графическом интерфейсе пользователя, куда пользователь может вводить данные.

Тимоти Тракл
источник
3

Битовые маски были изобретены по нескольким причинам:

  • Аппаратные регистры были сопоставлены с непрерывным набором битов
  • В недалеком прошлом пространство памяти было очень ограничено

Когда вы смотрите на то, как вы видите последовательность битов, которые вы хотите включить, или AND, чтобы отключить биты, это выглядит как маска.

Наиболее распространенная маска (основанная на битовых масках) - маска изображения (см. Ссылку, которую я включил в начале).

Берин Лорич
источник
2
Битовая карта значений флагов все еще является подходящим и более эффективным способом передачи набора флагов, чем массив boolили какой-либо другой способ иметь каждый флаг в отдельном байте. Это позволяет эффективно делать такие вещи, как if (x & (FLAG_A | FLAG_B))вместо if (xflags[FLAG_A] || xflags[FLAG_B]). Особенно если маска не постоянная; возможность передавать маску как целое число намного дешевле, чем передавать список проверяемых флагов. Таким образом, даже если бы память и кэш были неограничены, в некоторых случаях было бы намного эффективнее использовать битовые наборы и маски.
Питер Кордес
Никогда не говорил, что это все еще не полезно. Просто сказал, что корни были связаны с аппаратными регистрами и ограниченным объемом памяти. Я все еще использую битовые маски, когда они соответствуют проблеме.
Берин Лорич,
1
То, что я хотел сказать, было то, что источники, вероятно, равные части памяти и производительности на старых медленных компьютерах.
Питер Кордес,
1
Согласовано. Запрограммировав Commodore 64, вы также должны были знать битовые маски для работы с графикой, звуком, последовательным и параллельным вводом / выводом. Микросхемы контроллера были сопоставлены с адресами памяти с выводами, сопоставленными с битами в этом адресе. Я думаю, вы могли бы поспорить, повлияла ли битовая маска на аппаратный интерфейс или наоборот. В любом случае, вы должны были знать их, чтобы сделать что-нибудь полезное.
Берин Лорич
@BerinLoritsch Спасибо за ответ. Не могли бы вы объяснить, что вы подразумеваете под "аппаратными регистрами, которые были сопоставлены с непрерывным набором битов"? Разве аппаратные регистры не доступны независимо друг от друга?
yoyo_fun
3

Другим видом физической маски в ИТ является литографическая фотомаска, используемая для травления только части кремниевой пластины. Это не использовалось для производства самых ранних компьютеров, но любой, кто работал в отрасли за последние пятьдесят лет, знал бы об этом.

Я не знаю, когда появился точный термин «битовая маска», но сама операция является побитовой и является базовой инструкцией для каждого двоичного компьютера.

Davislor
источник
+1 за «базовые инструкции на каждом двоичном компьютере». Люди должны знать , что компьютеры являются , и почему они так.