Чому бітові маски називають «масками» і якій цілі вони служать?


79

Чому так називають "бітові маски"?

Я знаю, що вони в основному використовуються для побітових операцій, і використання бітових масок є більш ефективним, ніж використання окремих змінних.

Однак моє питання: чому і коли були винайдені бітові маски? Чи використовувалися вони з ранніх обчислень? Чи існують інші типи "масок", крім бітових масок в ІТ-області?


14
Фотолітографія (використовуючи ультрафіолетове світло для травлення функцій у кремнієві пластини) використовує "фотомаску" для вибіркового блокування джерела ультрафіолетового світла, щоб оголені ділянки кремнію мали правильний малюнок.
Леві



14
Коли-небудь робив роботу з фарбою і використовував малярну стрічку?
gnasher729

1
Інший тип масок: ідеальне виявлення зіткнень пікселів - це все про виявлення 2D-масок, що перекриваються.
aluriak

Відповіді:


101

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

Чи існують інші типи "масок", крім бітових масок в ІТ-області?

У верхній частині голови маски часто використовуються для обробки зображень. Це схожа концепція: ви створюєте чорно-біле зображення, яке показує форму того, що маскувати, а що пропустити.


33
Маски підмережі також досить поширені .
Матьє М.

38
@MatthieuM. але чи не маски підмережі також є біт-масками? Вони використовуються для фільтрації мережевої адреси та адреси хоста.
yoyo_fun

22
@JenniferAnderson Чи не чорно-біле зображення є лише піксельною бітовою маскою?
Бергі

8
Фізичні маски для зображення використовуються у виробництві кремнієвих чіпів, як частина техніки, що розвинулася від традиційної фотографії та технологічного друку. en.wikipedia.org/wiki/Фотолітографія
Джандер

20
Маскування - це також мистецький термін для захисту однієї області від змін, дозволяючи змінити іншу. Його часто використовують у живописі. Ось для чого призначена маскувальна стрічка: тому ви не малюєте речей, на яких не хочете малювати, поки все ще малюєте речі, які ви хочете малювати.
Нейт Діамант

54

Бітова маска використовується для маскування деяких шматочків бітового поля під час викриття інших:

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

Це було використано перед обчисленнями в електроніці з логічними воротами (І, АБО ...) або транзисторами або в електромеханіці з реле.


6
"Трохи маска використовується для маскування деяких шматочків бітового поля, під час викриття інших:" Я ніколи про це не думав, але це має багато сенсу. Дякую за пояснення :)
yoyo_fun

1
@mouvicel, будь ласка, вкажіть мені на деякі посилання про те, як бітові маски використовувались в електроніці з логічними воротами. З якою метою було, у яких системах використовувались ці операції та коли починалася ця методика?
yoyo_fun

4
щоб уточнити: початкове значення ANDed разом з маскою, і таким чином, лише біти маски у "1" зберігають вихідні біти від початкового значення (як, порозрядно, "1 і 1 = 1" і "0 і 1 = 0" ), а інші біти початкового значення встановлюються на 0 як (побітові) "0 і 0 = 0" і "1 і 0 = 0") (тому що "І" каже, що "лише тоді, коли перший біт І 2-й біт встановлюється на 1, це результат a 1. всі інші призводять до 0 ". (АБО означає: або з 1-го біта це 1, або з 2-го біта 1, результат буде 1. і т. д.)", див. en.wikipedia. org / wiki /…
Олів'є Дулак

2
@JenniferAnderson: Крім логічних бітових масок, фактичні маски використовуються в електроніці: паяльна маска - це трафарет (шматок картки), який використовується для нанесення пасти припою на друковані плати. Ви накладаєте маску на друковану плату, використовуєте за допомогою манікюру, щоб намазати пасту припою над маскою, тоді отвори в масці дозволять пасту точно покривати лише ті ділянки, які вам потрібні для пайки ( youtube.com/watch?v=EqJN1CTCOQ ) . У виробництві чіпів використовуються маски для нарощування або травлення структур на кремній. Це використання слова "маска" походить від поліграфічної галузі.
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

У найбільш загальному використанні англійською мовою маска - це пристрій, який щось приховує. Трафаретний друк згадується в іншій відповіді. Малярська стрічка щось «маскує», щоб уникнути нанесення фарби тощо. Маска припою на дошці ПК «маскує» ділянку, яку потрібно припаяти, з ділянки, яку не слід спаяти.

У разі "бітового маскування" деякі біти "приховані" або ігноруються, щоб інші, які представляють більше інтерес, можна було легше маніпулювати або просто переглядати.

Бітове маскування - це не просто «стара» техніка, це примітивна операція в більшості, якщо не у всіх інструкціях на машині, наскільки я знаю з самих ранніх процесорів. Зазвичай це у формі "використовувати бітовий шаблон у цьому реєстрі, щоб замаскувати біти в якомусь іншому регістрі".


12
Я не чув терміна «Малярська стрічка». Я припускаю, що це я б назвав "малярською стрічкою".
thelem

12
@thelem: Термін "маскувальна стрічка", принаймні в США, відноситься до легко розриваної стрічки на тканині. Використовуючи для малювання, він створює дещо «нечіткий» край. Оскільки така стрічка використовується для багатьох інших цілей, нові стрічки, які кращі для фарбування (але дорожчі та можуть бути менш придатними для інших цілей), називаються «малярською стрічкою».
supercat

2
@Barmar Кожен, хто зайшов до розділу з фарбуванням магазину обладнання, натрапив на них.
chrylis -на страйк-

5
Я не художник, і я знаю, що малярська стрічка та малярська стрічка - це два дуже різні типи стрічок. Можливо, просто сказано, що «Маскувальна стрічка - це тип стрічки, який використовується для своєї непрозорості і легко писати».
valbaca

2
Я спробував здійснити пошук на веб-сайті гігантського магазину технічного обладнання (Австралія), і першим хітом для "малярської стрічки" є продукт, позначений як "маскувальна стрічка", тому я думаю, що це все. ;) Підозрюю, що старі добрі термінологічні відмінності між регіонами. Люди дійсно прискіпливі до того, що також вважається стрічкою гафер, залежно від місця проживання.
Трейказ

10

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

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

Ще одне значення маски - це сторінка у графічному інтерфейсі користувача, де користувач може вводити дані.


3

Бітові маски були винайдені з кількох причин:

  • Реєстри апаратного забезпечення були зіставлені на суміжний набір бітів
  • Простір пам’яті був дуже обмеженим у не надто далекому минулому

Коли ви дивитесь на те, як ви бачите шаблон біт, який ви АБО вибираєте, щоб трохи увімкнути або ANDING, щоб вимкнути біти, це виглядає як маска.

Найпоширеніша маска (заснована на бітових масках) - це маска зображення (див. Посилання, яке я включив на початку).


2
Растровий малюнок значень прапор все ще є відповідним і більш ефективним способом пройти навколо набору прапорів, ніж масив boolабо якийсь інший спосіб розміщення кожного прапора в окремому байті. Це дозволяє ефективно робити такі речі, як не if (x & (FLAG_A | FLAG_B))замість них if (xflags[FLAG_A] || xflags[FLAG_B]). Особливо, якщо маска не є постійною; можливість передавати маску як ціле число набагато дешевше, ніж передавати список прапорів, які потрібно перевірити. Тож навіть якщо пам'ять і кеш-пам'ять були необмеженими, все-таки було б набагато ефективніше використовувати біти і маски в деяких випадках.
Пітер Кордес

Ніколи не говорив, що це ще не корисно. Щойно сказане, джерела мають коріння в роботі з апаратними регістрами та обмеженою пам’яттю. Я все ще використовую бітові маски, коли вони відповідають проблемі.
Берін Лорич

1
Що я хотів сказати, це те, що джерела - це, мабуть, рівні пам'яті та продуктивність на старих повільних комп'ютерах.
Пітер Кордес

1
Домовились. Програмувавши Commodore 64, вам також потрібно було знати бітові маски, щоб робити речі з графікою, звуком, послідовним і паралельним введенням-виведенням. Мікросхеми контролера були зіставлені на адреси пам'яті з штифтами, відображеними на біти в межах цієї адреси. Я думаю, ви можете заперечити, чи вплинула бітова маска на апаратний інтерфейс чи навпаки. У будь-якому випадку, вам довелося їх знати, щоб зробити щось корисне.
Берін Лорич

@BerinLoritsch Дякую за відповідь. Чи можете ви пояснити, що ви маєте на увазі під "Реєстри обладнання, відображені в суміжний набір бітів"? Чи не доступні апаратні регістри незалежно один від одного?
yoyo_fun

3

Інший вид фізичної маски в ІТ - це літографічна фотомаска, яка використовується для травлення лише частини кремнієвої пластини. Це не використовувалося для виготовлення найдавніших комп'ютерів, але той, хто працював у цій галузі за останні п’ятдесят років, про це знав би.

Я не знаю, коли з'явився точний термін "бітова маска", але сама операція є лише побітною, і це основна інструкція кожного бінарного комп'ютера.


+1 для "основної інструкції на кожному двійковому комп'ютері". Люди повинні знати , що комп'ютери є , і чому вони так.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.