02 Aug

비트마스크 예제

이 테이블에 대 한 좋은 점은 4 비트 범위의 모든 숫자를 나타낼 수 있습니다 0 – 15 조합을 통해. 예를 들어, 이진(101)인 5는 두 가지 방법으로 도출될 수 있다. 나는 Bitmask를 이해하는 데 문제가 있었다, 나는 구글에 비트 마스크에 대한 알 수없는 PDF를 발견했다. 나는 비트 마스크와 그 용도를 이해하는 나 같은 초보자를 돕고 싶습니다. 여기서 우리는 이동 : 짧은 비트 마스크는 여러 값의 위치를 조작하는 데 도움이됩니다. 여기에 좋은 예가 있습니다. 먼저 비트 마스크의 의미를 이해하려고 해 봅시다. 비트 마스크의 마스크는 무언가를 숨기는 것을 의미합니다. 비트 마스크는 무언가를 나타내는 이진 번호에 불과합니다. 예를 들어 보겠습니다.

$$A = {1, 2, 3, 4, 5$$$를 고려합니다. 길이 $5$$의 비트 마스크를 사용하여 $$A$$$$의 하위 집합을 나타낼 수 있으며, $$i^{th} (0 le ile 4)$$$ 비트가 설정된 경우 하위 집합에 $$i^{th}$$$$$의 요소가 존재한다는 것을 의미합니다. 따라서 비트 마스크 $01010$$$는 하위 집합 $${2, 4}$$$ 왼쪽 Shift(<) 연산자가 값을 지정된 횟수왼쪽으로 이동합니다. 예를 들어 정수에는 함께 묶인 비트의 무리일 뿐이라는 것을 알고 있습니다. 첫 번째 비트는 첫 번째 오브젝트가 선택되는지, 2번째 비트는 2번째 오브젝트가 선택되었는지 여부 등을 나타냅니다. 예를 들어 5개의 개체 집합에서 1, 3 및 4번째 개체를 선택했다고 가정합니다. 바이너리에서 이를 나타내는 비트 마스크는 소수점 01101 또는 13입니다 (노트에서 1 st 비트는 항상 가장 중요한 비트가 되고 항상 오른쪽에 나타납니다). 비트 마스크는 바이트의 데이터로 특정 비트에 액세스하는 데 사용됩니다. 이 기능은 예를 들어 단일 핀밖으로 바이트의 데이터를 직렬로 보낼 때 반복 하는 방법으로 유용 합니다. 이 예제에서는 핀이 전송될 바이트의 각 비트에 대해 상태를 높음에서 낮음으로 변경해야 합니다. 이것은 비트 별 작업 및 비트 마스크로 알려진 것을 사용하여 수행됩니다. 이전에 사용한 예제 응용 프로그램은 색상 RGB 값을 16비트 값으로 저장하고 있다고 가정합니다.

그래서 다음과 같은 뭔가 : 세트의 가능한 모든 하위 집합에 대한 i가있습니다. 마찬가지로 가능한 모든 숫자 구성을 함께 추가할 경우 결과 배열에 하나의 위치가 있습니다. 해당 하위 집합에 j-th 번호를 포함하는 경우 해당 줄은 i-th 하위 집합에 j-th 번호를 추가합니다. SPI Example 자습서의 세 번째 페이지는 비트 연산자에 대한 백라운드로 시작한 다음 코딩 기술과 함께 사용하여 원래 예제 프로그램을 개선합니다. 우리는 종종 사용자의 설정을 결정하기 위해 여러 부울을 저장해야합니다. 비트 마스크는 그렇게 할 수있는 좋은 경제적 방법입니다. 아이디어는 각 비트가 하나의 부울을 나타내는 단일 정예를 사용하는 것입니다. 이것은 다른 데이터베이스 열에 각 개별 설정을 저장하는 것보다 낫습니다. 비트 마스킹이란 무엇입니까? 1에서 N까지 번호가 매겨진 요소 컬렉션이 있다고 가정합니다. 이 집합의 하위 집합을 나타내려면 N 비트 시퀀스로 인코딩할 수 있습니다(일반적으로 이 시퀀스를 “마스크”라고 합니다). 선택한 하위 집합에서 i-th 요소는 마스크의 i-th 비트가 즉, 1로 설정된 경우에만 해당합니다.

예를 들어, 마스크 10000101은 세트의 하위 집합을 의미한다 [1… 8] 요소 1, 3 및 8로 구성됩니다. N 요소 집합의 경우 총 2N 하위 집합이 있으므로 각 하위 집합을 나타내는 2N 마스크가 가능합니다. 실제로 각 마스크는 이진 표기명으로 작성된 정수 번호입니다. 비트 마스크는 일명 가볍고 작은 부울 세트(C/C++/Java의 기본 지원)입니다. 정수는 비트의 시퀀스/문자열로 컴퓨터의 메모리에 저장됩니다.