Dlaczego maski bitowe nazywane są „maskami” i do czego służą?


79

Dlaczego tak nazywane są „maski bitowe”?

Wiem, że są one używane głównie do operacji bitowych, a użycie masek bitowych jest bardziej wydajne niż użycie osobnych zmiennych.

Moje pytanie brzmi jednak, dlaczego i kiedy wymyślono maski bitowe? Czy były używane od wczesnych czasów? Czy istnieją inne typy „masek” poza maskami bitowymi w domenie IT?


14
Fotolitografia (wykorzystująca światło UV do wytrawiania elementów w płytki krzemowe) wykorzystuje „maskę fotograficzną” do selektywnego blokowania źródła światła UV, tak aby odsłonięte obszary krzemu miały prawidłowy wzór.
Levi



14
Czy kiedykolwiek zrobiłeś malowanie i użyłeś taśmy maskującej?
gnasher729,

1
Inny rodzaj masek: detekcja idealnej kolizji pikseli polega na wykrywaniu nakładających się masek 2D.
aluriak

Odpowiedzi:


101

Maska (odmiany twarzy) to coś, co zakrywa niektóre części twarzy i pozwala na pokazanie innych części. Terminologia jest używana przez analogię w obliczeniach: maska ​​bitowa zakrywa (odfiltrowuje) niektóre bity w zestawie bitów i pozwala innym przejść.

Czy istnieją inne typy „masek” poza maskami bitowymi w domenie IT?

Tuż po mojej głowie maski są często używane w przetwarzaniu obrazu. Jest to podobna koncepcja: tworzysz czarno-biały obraz, który pokazuje kształt tego, co maskować, a co przepuścić.


33
Maski podsieci są również dość powszechne .
Matthieu M.

38
@MatthieuM. ale czy maski podsieci nie są również maskami bitowymi? Służą do odfiltrowania adresu sieciowego i adresu hosta.
yoyo_fun

22
@JenniferAnderson Czy obraz czarno-biały nie jest tylko maską bitową pikseli?
Bergi,

8
Fizyczne maski obrazu są stosowane w produkcji chipów krzemowych, jako część techniki, która ewoluowała od tradycyjnej fotografii i drukowania procesowego. en.wikipedia.org/wiki/Photolithography
Jander

20
Maskowanie to również artystyczny termin ochrony jednego obszaru przed zmianą, umożliwiający zmianę innego. Jest często używany w malarstwie. Po to jest taśma maskująca: abyś nie malował na rzeczach, na których nie chcesz malować, a jednocześnie malował na rzeczach, na których chcesz malować.
Nate Diamond,

54

Maska bitowa służy do maskowania niektórych bitów pola bitowego przy jednoczesnym odsłonięciu innych:

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

Zostało to wykorzystane przed obliczeniami w elektronice z bramkami logicznymi (AND, OR ...) lub tranzystorami lub w elektromechanice z przekaźnikami.


6
„Maska bitowa służy do maskowania niektórych bitów pola bitowego, podczas gdy inne są odsłaniane:„ Nigdy nie myślałem o tym w ten sposób, ale ma to sens. Dziękuję za wyjaśnienie :)
yoyo_fun

1
@mouvicel, czy możesz wskazać mi linki do tego, jak maski bitowe były używane w elektronice z logicznymi bramkami. Jaki był cel, w jakich systemach zastosowano te operacje i kiedy zaczęła się ta technika?
yoyo_fun

4
dla wyjaśnienia: wartość początkowa jest ANDed z maską, a zatem tylko bity maski w „1” utrzymują oryginalne bity od wartości początkowej (jako bitowe „1 i 1 = 1” oraz „0 i 1 = 0” ), a pozostałe bity wartości początkowej są ustawione na 0 jako (bitowe) „0 i 0 = 0” oraz „1 i 0 = 0”) (ponieważ „I” mówi to „tylko wtedy, gdy pierwszy bit ORAZ 2. bit jest ustawiony na 1, jest wynikiem 1. wszystkie pozostałe dają wynik 0 ". (LUB oznacza: albo przy 1. bicie to 1 LUB 2. bit to 1, wynik będzie 1. itd.). zobacz en.wikipedia. org / wiki /…
Olivier Dulac

2
@JenniferAnderson: Oprócz logicznych masek bitowych w elektronice stosowane są rzeczywiste maski: maska ​​lutownicza to szablon (kawałek karty), który służy do osadzania pasty lutowniczej na płytkach drukowanych. Umieszczasz maskę na płytce drukowanej, za pomocą ściągaczki smarujesz pastę lutowniczą po masce, a następnie otwory w masce przepuszczają pastę, aby dokładnie pokryć tylko te obszary, które potrzebujesz pasty lutowniczej ( youtube.com/watch?v=EqJN1CTCOQs ) . W produkcji chipów maski służą do budowania lub wytrawiania struktur na krzemie. Takie użycie słowa „maska” pochodzi z branży poligraficznej.
slebetman

4
@JenniferAnderson: Użycie słowa „maska” w języku angielskim w celu zakrycia czegoś jest bardziej ogólne i prawdopodobnie dużo starsze. Na przykład w języku angielskim mówimy, że perfumy mogą służyć do maskowania nieprzyjemnego zapachu.
slebetman

39

Maski bitowe są strasznie stare. Nie udało mi się znaleźć odniesienia do pierwszego, ale z pewnością były popularne dzięki pojawieniu się procesorów 8-bitowych i prawdopodobnie były również używane w procesorach 4-bitowych.

Ideą mask bitowych jest wykorzystanie równoległości bitowej. 8-bitowy komputer może wykonać tę samą bitową operację na 8 bitach jednocześnie, jeśli są one spakowane w jedno natywne słowo (co oznacza, że ​​mieści się w rejestrze).

Nazwa pochodzi od maskowania, które jest ogólnym podejściem do ukrywania obszarów, z którymi nie chcesz wchodzić w interakcje. Weźmy na przykład ten szablon do maskowania obszarów ściany (szablon został przesunięty po malowaniu, aby pokazać wzór)

Szablony

Maski są również używane w fotografii, gdzie określane są raczej terminem „unik” niż „szablon”. Możesz użyć maski, aby zasłonić część światła podczas drukowania, aby rozjaśnić obszar.

Maski fotograficzne

Termin ten jest również stosowany bezpośrednio w fotolitografii, która jest techniką stosowaną do tworzenia układów scalonych. Maska zapobiega przedostawaniu się światła do fotorezystu pomalowanego na chipie, który tworzy wzory, które później prowadzą do fińskich wzorów na chipie. (Poniższy obraz jest jedną z masek procesora Intel 8080A , jeśli jesteś ciekawy)

Maska do fotolitografii

Podobnie w maskowaniu bitów wybierasz części słowa, na których chcesz operować, maskując wszystkie pozostałe bity. W poniższym przykładzie używam operacji „i” do maskowania danych wejściowych tak, aby wyświetlały się tylko 3, 4 i 8 bit. Reszta jest „zamaskowana”, więc są zerami. Maska, której używam, to 00110001. Pokazuję to poniżej z #reprezentowaniem 0 i .reprezentowaniem 1, ponieważ dzięki temu wygląd maski jest podobny do maski fizycznej powyżej i pokazuję wiersz „wybranych bitów”, który pokazuje bity z wyjścia, które nie zostały zamaskowane ( „wybrane bity” nie są tak naprawdę logiczną operacją, która się dzieje… procesor tak naprawdę przechodzi od wejścia ORAZ maski do wyjścia w jednym kroku, ale myślę, że to wyjaśnia obraz)

Input          10010111
Mask           ##..###.  (aka 00110001)
-----------------------
(selected)       01   1
Input AND Mask 00010001

Jak wspomniałem, maskowanie bitów jest strasznie stare, ponieważ znacznie zwiększa wydajność procesora. W przypadku 4-bitowego procesora może on czterokrotnie przyspieszyć procesor. W przypadku procesu 8-bitowego lub może być 8-krotnie szybszy (oczywiście tylko w przypadku operacji bitowych).

Jednym z fascynujących zastosowań są silniki szachowe. Szachownica ma 64 pola. Nowoczesne silniki mają 64-bitowe liczby całkowite. Jest to wyjątkowo wygodne szczęście, więc silniki szachowe często go wykorzystują. Mają tak zwane „ płyty bitowe ”, które zawierają lokalizacje elementów. Pozwala to na wykonywanie różnego rodzaju optymalizacji, takich jak wyszukiwanie wszystkich ruchów pionka w jednym kroku.


33

W najbardziej ogólnym użyciu w języku angielskim maska ​​to urządzenie, które coś ukrywa. Sitodruk wymieniono w innej odpowiedzi. Malowanie taśmy „maskuje” coś, aby uniknąć zabrudzenia, itp. Maska lutownicza na płycie PC „maskuje” obszar do lutowania z obszaru, który nie będzie lutowany.

W przypadku „maskowania bitów” niektóre bity są „ukryte” lub ignorowane, aby inne, bardziej interesujące, można było łatwiej obsługiwać lub przeglądać.

Maskowanie bitów nie jest jedynie „starą” techniką, ale jest to prymitywna operacja w większości, jeśli nie we wszystkich instrukcjach maszyn, o ile wiem z najwcześniejszych procesorów. Zwykle ma to postać „użyj wzorca bitów w tym rejestrze, aby zamaskować bity w innym rejestrze”.


12
Nie słyszałem terminu „taśma malarska”. Zakładam, że to właśnie nazwałbym „taśmą maskującą”.
thelem

12
@ thelem: Termin „taśma maskująca”, przynajmniej w USA, odnosi się do łatwo rozrywanej taśmy na bazie materiału. W przypadku malowania tworzy nieco „rozmytą” krawędź. Ponieważ taka taśma jest używana do wielu innych celów, nowsze taśmy, które są lepsze do malowania (ale są droższe i mogą być mniej odpowiednie do innych celów), nazywane są „taśmą malarską”.
supercat

2
@Barmar Każdy, kto poszedł do działu malowania w sklepie ze sprzętem, natknie się na nich.
Chrylis

5
Nie jestem malarzem i wiem, że taśma malarska i taśma maskująca to dwa bardzo różne rodzaje taśm. Być może po prostu mówiąc, że „Taśma maskująca jest rodzajem taśmy, która jest używana ze względu na nieprzezroczystość i łatwo ją pisać”.
valbaca

2
Próbowałem przeszukać witrynę lokalnego sklepu z gigantami (Australia) i pierwszy hit „taśma malarska” to produkt oznaczony jako „taśma maskująca”, więc chyba tak. ;) Podejrzewam, że stare dobre różnice terminologiczne między regionami. Ludzie są bardzo wybredni w kwestii tego, co liczy się również jako taśma gaffer, w zależności od miejsca zamieszkania.
Trejkaz

10

Bit maski jest podobny do sitodruku . Wybierasz pewną pozycję bitu, która ma zostać przejęta w wyniku:

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

Innym znaczeniem maski jest strona w graficznym interfejsie użytkownika, w której użytkownik może wprowadzać dane.


3

Maski bitowe zostały wynalezione z kilku powodów:

  • Rejestry sprzętowe zostały zamapowane na ciągły zestaw bitów
  • Miejsce pamięci było bardzo ograniczone w niezbyt odległej przeszłości

Kiedy patrzysz na to, jak widzisz wzór bitów, których OR chcesz włączyć nieco lub ANDing, aby wyłączyć bity, wygląda jak maska.

Najczęstszą maską (opartą na maskach bitowych) jest maska ​​obrazu (patrz link, który zamieściłem na początku).


2
Mapa bitowa wartości flag jest nadal odpowiednim i bardziej wydajnym sposobem przekazywania zestawu flag niż tablica boollub inny sposób umieszczenia każdej flagi w osobnym bajcie. Umożliwia to wydajne wykonywanie czynności takich jak if (x & (FLAG_A | FLAG_B))zamiast if (xflags[FLAG_A] || xflags[FLAG_B]). Zwłaszcza jeśli maska ​​nie jest stała; możliwość podania maski jako liczby całkowitej jest znacznie tańsza niż przekazanie listy flag do sprawdzenia. Więc nawet jeśli pamięć i pamięć podręczna byłyby nieograniczone, nadal byłoby o wiele bardziej wydajne stosowanie zestawów bitów i masek w niektórych przypadkach.
Peter Cordes,

Nigdy nie powiedziałem, że to wciąż nie było przydatne. Właśnie powiedział, że początki miały swoje korzenie w rejestrach sprzętowych i ograniczonej pamięci. Nadal używam masek bitowych, gdy są odpowiednie do problemu.
Berin Loritsch,

1
Chciałem powiedzieć, że początki są prawdopodobnie równe pod względem pamięci i wydajności na starych wolnych komputerach.
Peter Cordes,

1
Zgoda. Po zaprogramowaniu Commodore 64 musiałeś także znać maski bitowe do robienia rzeczy z grafiką, dźwiękiem, szeregowym i równoległym We / Wy. Chipy kontrolera zostały zmapowane na adresy pamięci z pinami zmapowanymi na bity w tym adresie. Wydaje mi się, że można spierać się, czy maska ​​bitowa wpłynęła na interfejs sprzętowy lub odwrotnie. Tak czy inaczej, musiałeś ich znać, aby zrobić coś pożytecznego.
Berin Loritsch,

@BerinLoritsch Dziękujemy za odpowiedź. Czy możesz wyjaśnić, co rozumiesz przez „Rejestry sprzętowe zostały zamapowane na ciągły zestaw bitów”? Czy dostęp do rejestrów sprzętowych nie jest niezależny?
yoyo_fun

3

Innym rodzajem maski fizycznej w IT jest maska ​​fotograficzna litograficzna używana do wytrawiania tylko części płytki krzemowej. Nie wykorzystano tego do produkcji najwcześniejszych komputerów, ale każdy, kto pracował w branży w ciągu ostatnich pięćdziesięciu lat, byłby tego świadomy.

Nie wiem, kiedy pojawił się dokładny termin „maska ​​bitowa”, ale sama operacja jest nieco bitowa i jest to podstawowa instrukcja każdego komputera binarnego.


+1 za „podstawowe instrukcje w każdym komputerze binarnym”. Ludzie muszą wiedzieć, czym komputery i dlaczego tak są.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.