Почему "битовые маски" называются так?
Я знаю, что они в основном используются для побитовых операций, и использование битовых масок более эффективно, чем использование отдельных переменных.
Однако мой вопрос: почему и когда были изобретены битовые маски? Были ли они использованы с ранних вычислений? Существуют ли другие типы «масок» помимо битовых масок в области ИТ?
Ответы:
Маска (разнообразная для лица) - это то, что покрывает некоторые части вашего лица и позволяет другим деталям просвечивать. Терминология используется по аналогии в вычислениях: битовая маска скрывает (отфильтровывает) некоторые биты в битовом наборе и позволяет другим проходить.
Чуть выше головы, маски часто используются при обработке изображений. Это похожая концепция: вы создаете черно-белое изображение, которое показывает форму того, что нужно скрыть, а что пропустить.
источник
Битовая маска используется для маскировки некоторых битов битового поля при демонстрации других:
Это использовалось перед вычислениями в электронике с логическими элементами (И, ИЛИ ...) или транзисторами или в электромеханике с реле.
источник
Битовые маски ужасно стары. Я не смог найти ссылку на первый, но они, безусловно, были популярны с появлением 8-разрядных процессоров и, вероятно, также использовались в 4-разрядных процессорах.
Идея, стоящая за битовыми масками, заключается в том, чтобы использовать преимущества побитового параллелизма. 8-битный компьютер может выполнять одну и ту же побитовую операцию одновременно с 8 битами, если они упакованы в одно собственное слово (что означает, что оно помещается в регистр).
Название происходит от маскировки, которая является общим подходом для маскировки областей, с которыми вы не хотите взаимодействовать. Например, рассмотрите этот трафарет для маскировки областей стены (после рисования трафарет был перемещен, чтобы показать рисунок)
Маски также используются в фотографии, где они обозначаются термином «уклонение», а не «трафарет». Вы можете использовать маску, чтобы скрыть часть света во время печати, чтобы осветлить область.
Термин также используется непосредственно в фотолитографии, которая является техникой, используемой для создания интегральных схем. Маска предотвращает попадание света на фоторезист, нанесенный на чип, что создает рисунки, которые впоследствии приводят к появлению рисунков на чипе. (Изображение ниже - одна из масок для процессора Intel 8080A , если вам интересно)
Аналогично, при маскировании битов вы выбираете части слова, с которыми хотите работать, маскируя все остальные биты. В приведенном ниже примере я использую операцию «и», чтобы замаскировать входные данные таким образом, чтобы показывались только 3-й, 4-й и 8-й биты. Остальные «замаскированы», так что они 0. Я использую маску
00110001
. Ниже я показываю это с#
представлением 0 и.
представлением 1, потому что это делает визуальный внешний вид битовой маски похожим на внешний вид физических масок выше, и я показываю строку «выбранные биты», которая показывает биты из вывода, которые не были замаскированы ( «выбранные биты» на самом деле не являются логической операцией, которая происходит ... процессор действительно переходит от маски ввода и вывода к выводу за один шаг, но я думаю, что это проясняет визуальное изображение)Как я уже упоминал, битовая маскирование ужасно устарело, поскольку значительно повышает производительность процессора. На 4-битном процессоре он может сделать процессор в 4 раза быстрее. На 8-битном процессе, или он может сделать его в 8 раз быстрее (конечно, только на битовых операциях).
Одно из увлекательных применений - шахматные движки. Шахматная доска имеет 64 квадрата. Современные двигатели имеют 64-битные целые числа. Это очень удобная удача, поэтому шахматные движки часто используют ее. У них есть так называемые « битборды », которые содержат расположение фигур. Это позволяет вам выполнять все виды оптимизаций, такие как поиск всех ходов пешки за один шаг.
источник
В своем наиболее общем использовании на английском языке маска - это устройство, которое что-то скрывает. Трафаретная печать упоминается в другом ответе. Окрашивающая лента «маскирует» что-то, чтобы избежать попадания краски на нее и т. Д. Маска для пайки на печатной плате «маскирует» область, подлежащую пайке, с области, не подлежащей пайке.
В случае «маскирования битов» некоторые биты являются «скрытыми» или игнорируются, так что другие, представляющие больший интерес, можно легче манипулировать или просто просматривать.
Битовая маскировка - это не просто «старая» техника, это примитивная операция в большинстве, если не во всех машинных инструкциях, насколько я знаю из самых ранних процессоров. Обычно это в форме «использовать битовую комбинацию в этом регистре для маскировки битов в каком-либо другом регистре».
источник
Битовая маска похожа на трафаретную печать . Вы выбираете какую-то определенную битовую позицию, которая будет включена в результат:
source value = 42 -> 00101010b
mask = 51 -> 00110011b
result 42&51 = 00100010b -> 34
Другое значение маски - это страница в графическом интерфейсе пользователя, куда пользователь может вводить данные.
источник
Битовые маски были изобретены по нескольким причинам:
Когда вы смотрите на то, как вы видите последовательность битов, которые вы хотите включить, или AND, чтобы отключить биты, это выглядит как маска.
Наиболее распространенная маска (основанная на битовых масках) - маска изображения (см. Ссылку, которую я включил в начале).
источник
bool
или какой-либо другой способ иметь каждый флаг в отдельном байте. Это позволяет эффективно делать такие вещи, какif (x & (FLAG_A | FLAG_B))
вместоif (xflags[FLAG_A] || xflags[FLAG_B])
. Особенно если маска не постоянная; возможность передавать маску как целое число намного дешевле, чем передавать список проверяемых флагов. Таким образом, даже если бы память и кэш были неограничены, в некоторых случаях было бы намного эффективнее использовать битовые наборы и маски.Другим видом физической маски в ИТ является литографическая фотомаска, используемая для травления только части кремниевой пластины. Это не использовалось для производства самых ранних компьютеров, но любой, кто работал в отрасли за последние пятьдесят лет, знал бы об этом.
Я не знаю, когда появился точный термин «битовая маска», но сама операция является побитовой и является базовой инструкцией для каждого двоичного компьютера.
источник