비트 마스크가 "마스크"라고하는 이유는 무엇이며 어떤 용도로 사용됩니까?


79

"비트 마스크"가 왜 이렇게 호출됩니까?

나는 주로 비트 연산에 사용되며 비트 마스크 사용은 별도의 변수 사용보다 효율적이라는 것을 알고 있습니다.

그러나 내 질문은 비트 마스크가 발명 된 이유와시기입니다. 초기 컴퓨팅 이후에 사용 되었습니까? IT 도메인의 비트 마스크 외에 다른 유형의 "마스크"가 있습니까?


14
포토 리소그래피 (UV 웨이퍼를 사용하여 피처를 실리콘 웨이퍼로 에칭)는 "포토 마스크"를 사용하여 UV 광원을 선택적으로 차단하여 노출 된 실리콘 영역이 올바른 패턴을 갖도록합니다.
레위



14
페인트 작업을하고 마스킹 테이프를 사용한 적이 있습니까?
gnasher729

1
다른 유형의 마스크 : 픽셀 완전 충돌 감지 는 2D 마스크 오버랩 감지에 관한 것입니다.
aluriak

답변:


101

(다양한 얼굴의) 마스크는 얼굴의 일부를 덮고 다른 부분이 보이도록하는 것입니다. 이 용어는 컴퓨팅에서 유추에 의해 사용됩니다. 비트 마스크는 비트 세트의 일부 비트를 커버 (필터링)하고 다른 비트는 통과시킵니다.

IT 도메인의 비트 마스크 외에 다른 유형의 "마스크"가 있습니까?

내 머리 꼭대기에서 마스크는 이미지 처리에 자주 사용됩니다. 비슷한 개념입니다. 마스크 할 대상과 통과 할 대상의 모양을 보여주는 흑백 이미지를 만듭니다.


33
서브넷 마스크도 매우 일반적 입니다.
Matthieu M.

38
@MatthieuM. 서브넷 마스크도 비트 마스크가 아닌가? 네트워크 주소와 호스트 주소를 필터링하는 데 사용됩니다.
yoyo_fun

22
@JenniferAnderson 흑백 이미지도 단순한 픽셀 비트 마스크가 아닙니까?
Bergi

8
물리적 이미지 마스크는 전통적인 사진 및 프로세스 인쇄에서 발전한 기술의 일부로 실리콘 칩 생산에 사용됩니다. en.wikipedia.org/wiki/Photolithography
Jander

20
마스킹 은 한 영역의 변화를 방지하면서 다른 영역의 변화를 허용하는 예술 용어입니다. 회화에 자주 사용됩니다. 이것이 바로 마스킹 테이프의 목적입니다. 따라서 페인트하고 싶지 않은 것에 페인트 칠을하지 않고 페인트하고 싶지 않은 것에 페인트하지 마십시오.
네이트 다이아몬드

54

비트 마스크는 비트 필드의 일부 비트를 마스킹하고 다른 비트는 노출시키는 데 사용됩니다.

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

논리 게이트 (AND, OR ...) 또는 트랜지스터가있는 전자 장치 또는 릴레이가있는 전기 기계에서 계산하기 전에 사용되었습니다.


6
"비트 마스크는 비트 필드의 일부 비트를 마스킹하는 데 사용되는 반면 다른 비트는 노출시키지 않습니다." 설명 주셔서 감사합니다 :)
yoyo_fun

1
@mouvicel 당신은 논리 게이트가있는 전자 장치에서 비트 마스크가 어떻게 사용되었는지에 대한 링크를 알려주십시오. 이 작업에 어떤 목적이 있었으며 어떤 종류의 시스템이 사용되었으며 언제이 기술이 시작 되었습니까?
yoyo_fun

4
명확하게하기 위해 : 초기 값은 마스크와 함께 AND되므로, "1"의 마스크 비트 만이 원래 비트를 초기 값으로부터 (비트, "1 및 1 = 1"및 "0 및 1 = 0")으로부터 유지한다 )이고 초기 값의 다른 비트는 (비트 단위) "0 및 0 = 0"및 "1 및 0 = 0"으로 0으로 설정됩니다 ( "And"는 "첫 번째 비트 AND 두 번째 비트 만 비트는 1로 설정되고 결과는 1입니다. 다른 모든 결과는 0 "이됩니다. (또는 의미 : 첫 번째 비트가 1이거나 두 번째 비트가 1이면 결과가 1입니다.). en.wikipedia를
Olivier Dulac

2
@JenniferAnderson : 논리 비트 마스크와는 별도로 실제 마스크는 전자 제품에 사용됩니다. 솔더 마스크는 스텐실 (일부 카드)로 PCB에 솔더 페이스트를 증착하는 데 사용됩니다. 마스크를 PCB에 넣고 스퀴지를 사용하여 마스크 위에 솔더 페이스트를 바르십시오. 그러면 마스크의 구멍으로 페이스트가 솔더 페이스트가 필요한 영역 만 정확하게 덮을 수 있습니다 ( youtube.com/watch?v=EqJN1CTCOQs ) . 칩 제조 마스크는 실리콘 상에 구조물을 형성하거나 에칭하는데 사용된다. "마스크"라는 단어의 사용은 인쇄 산업에서 나옵니다.
slebetman

4
@JenniferAnderson : 영어로 "마스크"라는 단어를 사용하여 무언가를 가리는 것이 더 일반적이며 아마도 더 오래되었습니다. 예를 들어 영어로 우리는 향수가 나쁜 냄새를 가리는 데 사용될 수 있다고 말합니다.
slebetman

39

비트 마스크는 너무 오래되었습니다. 나는 첫 번째 참조를 찾을 수 없었지만 8 비트 프로세서의 출현으로 확실히 인기가 있었고 4 비트 프로세서에서도 사용되었을 가능성이 있습니다.

비트 마스크의 기본 개념은 비트 병렬 처리를 이용하는 것입니다. 8 비트 컴퓨터는 단일 기본 단어 (레지스터에 적합 함)로 묶여 있으면 한 번에 8 비트와 동일한 비트 연산을 수행 할 수 있습니다.

이름은 마스킹에서 비롯된 것으로, 상호 작용하지 않으려는 영역을 덮는 일반적인 방법입니다. 예를 들어, 벽의 영역을 가리기 위해이 스텐실을 고려하십시오 (스텐실은 패턴을 표시하기 위해 페인팅 후에 이동했습니다)

스텐실

마스크는 사진에 사용되며, 여기서 "스텐실"이 아니라 "닷지"라는 용어로 사용됩니다. 인쇄하는 동안 마스크를 사용하여 빛의 일부를 가려서 영역을 밝게 할 수 있습니다.

사진 마스크

이 용어는 직접 회로를 만드는 데 사용되는 기술인 포토 리소그래피에도 직접 사용됩니다. 이 마스크는 칩에 그려진 포토 레지스트에 빛이 도달하는 것을 방지하여 나중에 칩의 매혹적인 패턴으로 이어지는 패턴을 만듭니다. (아래 이미지는 궁금한 경우 인텔 8080A 프로세서 의 마스크 중 하나입니다 )

포토 리소그래피 마스크

마찬가지로 비트 마스킹에서는 작업하려는 단어 부분을 선택하여 나머지 비트를 모두 마스킹합니다. 아래 예제에서는 "and"연산을 사용하여 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

영어에서 가장 일반적으로 사용되는 마스크는 무언가를 숨기는 장치입니다. 다른 답변에서 스크린 인쇄가 언급됩니다. 페인트 테이프는 페인트 칠 등을 피하기 위해 무언가를 '마스크 오프'합니다. PC 보드의 솔더 마스크는 솔더링되지 않을 영역에서 솔더링 할 영역을 '마스크'합니다.

"비트 마스킹"의 경우, 일부 비트는 '숨겨 지거나'무시되므로 더 관심있는 다른 비트는 더 쉽게 조작하거나 볼 수 있습니다.

비트 마스킹은 단순히 '구식'기술이 아니라 가장 오래된 프로세서에서 아는 한 모든 기계 명령어가 아닌 대부분의 기본 작업입니다. 일반적으로 이것은 "이 레지스터의 비트 패턴을 사용하여 다른 레지스터의 비트를 마스킹하는"형식입니다.


12
"페인팅 테이프"라는 용어를 듣지 못했습니다. 이것이 내가 "마스킹 테이프"라고 부르는 것으로 가정합니다.
thelem

12
@thelem : 미국에서 최소한 "마스킹 테이프"라는 용어는 쉽게 찢겨진 천 기반 테이프를 나타냅니다. 페인팅에 사용될 때 다소 "모호한"가장자리를 만듭니다. 이러한 테이프는 많은 다른 목적으로 사용되기 때문에 페인팅에 더 적합한 (그러나 더 비싸고 다른 목적에 적합하지 않은) 새로운 테이프를 "페인터 테이프"라고합니다.
supercat

2
@Barmar 철물점의 그림 섹션으로 간 사람은 누구나 가로 질러갑니다.
chrylis

5
나는 화가가 아니며 화가의 테이프와 마스킹 테이프가 서로 다른 두 가지 유형의 테이프라는 것을 알고 있습니다. 아마도 "마스킹 테이프는 불투명성에 사용되며 쓰기가 쉬운 테이프 유형입니다."라고 말했을 것입니다.
valbaca

2
로컬 (오스트레일리아) 거대한 철물점 웹 사이트를 검색하려고했는데 "페인팅 테이프"에 대한 첫 번째 히트는 "마스킹 테이프"라는 레이블이 붙은 제품입니다. ;) 지역간에 좋은 오래된 용어 차이가 있다고 생각합니다. 사람들은 거주지에 따라 테이프 테이프로 간주되는 것에 대해 까다로워합니다.
Trejkaz

10

비트 마스크 와 유사하다 스크린 인쇄 . 결과에 적용 할 특정 비트 위치를 선택합니다.

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

마스크의 또 다른 의미 는 사용자가 데이터를 입력 할 수 있는 그래픽 사용자 인터페이스 의 페이지입니다 .


3

비트 마스크 는 두 가지 이유로 발명되었습니다.

  • 하드웨어 레지스터는 연속적인 비트 세트에 매핑되었습니다
  • 너무 먼 과거에 메모리 공간이 매우 제한되었습니다.

비트를 켤 때 OR 또는 비트를 끄는 AND의 비트 패턴이 어떻게 보이는지 보면 마스크처럼 보입니다.

비트 마스크를 기반으로하는 가장 일반적인 마스크는 이미지 마스크입니다 (처음에 포함 된 링크 참조).


2
플래그 값의 비트 맵은 bool각 플래그를 별도의 바이트 로 배열 하는 다른 방법이나 다른 방법 보다 플래그 집합을 전달하는 데 적합하고 효율적인 방법 입니다. 따라서 if (x & (FLAG_A | FLAG_B))대신 대신 같은 작업을 수행 할 수 있습니다 if (xflags[FLAG_A] || xflags[FLAG_B]). 특히 마스크가 일정하지 않은 경우; 마스크를 정수로 전달할 수 있으면 검사 할 플래그 목록을 전달하는 것보다 훨씬 저렴합니다. 따라서 메모리와 캐시가 무제한이더라도 비트 세트와 마스크를 사용하는 것이 훨씬 더 효율적일 수 있습니다.
Peter Cordes

여전히 유용하지 않다고 말한 적이 없습니다. 방금 출처는 하드웨어 레지스터와 제한된 메모리를 다루는 데 뿌리를두고 있다고 말했습니다. 비트 마스크가 문제에 적절할 때 여전히 사용합니다.
Berin Loritsch

1
내가 말하고자하는 것은 기원이 오래된 느린 컴퓨터의 부품 메모리와 성능과 같다는 것입니다.
Peter Cordes

1
동의했다. Commodore 64를 프로그래밍 한 후에는 그래픽, 사운드, 직렬 및 병렬 I / O로 작업을 수행하기 위해 비트 마스크를 알아야했습니다. 컨트롤러 칩은 해당 주소 내의 비트에 핀이 매핑 된 메모리 주소에 매핑되었습니다. 비트 마스크가 하드웨어 인터페이스에 영향을 주 었는지 또는 그 반대인지에 대해 논쟁 할 수 있다고 생각합니다. 어느 쪽이든, 당신은 유용한 일을하기 위해 그것들을 알아야했습니다.
Berin Loritsch

@BerinLoritsch 답변 주셔서 감사합니다. "하드웨어 레지스터가 연속 된 비트 세트에 매핑되었습니다"는 무슨 의미입니까? 하드웨어 레지스터가 서로 독립적으로 액세스되지 않습니까?
yoyo_fun

3

IT의 또 다른 종류의 물리 마스크는 실리콘 웨이퍼의 일부만을 에칭하는 데 사용되는 리소그래피 포토 마스크입니다. 초기 컴퓨터를 제조하는 데는 사용되지 않았지만 지난 50 년 동안 업계에서 일하는 사람이라면 누구나 알고있을 것입니다.

“비트 마스크”라는 정확한 용어가 언제 나타 났는지 모르지만 작업 자체는 비트 단위이며 모든 바이너리 컴퓨터의 기본 명령입니다.


"모든 바이너리 컴퓨터의 기본 명령"에 +1 사람들은 컴퓨터 무엇인지 , 왜 그런지 알아야합니다 .
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.