Бітмаски жахливо старі. Мені не вдалося знайти посилання на перший, але вони, безумовно, були популярні появою 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 бітні цілі числа. Це надзвичайно зручно для удачі, тому шахові двигуни часто користуються цим. Вони мають так звані " бітборди ", які містять місця розміщення штук. Це дозволяє робити всілякі оптимізації, такі як пошук усіх ходів пішаків за один крок.