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?
Odpowiedzi:
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ść.
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ć.
źródło
Maska bitowa służy do maskowania niektórych bitów pola bitowego przy jednoczesnym odsłonięciu innych:
Zostało to wykorzystane przed obliczeniami w elektronice z bramkami logicznymi (AND, OR ...) lub tranzystorami lub w elektromechanice z przekaźnikami.
źródło
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)
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.
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)
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)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.
źródło
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”.
źródło
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.
źródło
Maski bitowe zostały wynalezione z kilku powodów:
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).
źródło
bool
lub inny sposób umieszczenia każdej flagi w osobnym bajcie. Umożliwia to wydajne wykonywanie czynności takich jakif (x & (FLAG_A | FLAG_B))
zamiastif (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.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.
źródło