lierre

bit mask 예제

"비트 마스크"는 단순히 무언가를 나타내는 이진 번호입니다. 마스크는...

02 Août

« 비트 마스크 »는 단순히 무언가를 나타내는 이진 번호입니다. 마스크는 유지하려는 비트와 지우려는 비트를 정의합니다. 다음 마스크와 마지막 비트를 추출하려는 두 비트 문자열을 고려하십시오. 이 버전은 지금까지 사용된 각 MMA7455 레지스터의 주소에 대한 상수를 선언합니다. 또한 레지스터 값의 비트 6을 설정하거나 지우기 위해 상수 쓰기Mask 및 readMask를 선언합니다. 그런 다음 shift_out 및 shift_in 값 매개 변수 (hooray!)에 대해 헥사데피좀에서 바이너리로 수동으로 변환 할 필요가 없습니다. 수정된 예제에서는 I/O 핀의 숫자 대신 이름을 사용합니다. 이렇게 하면 드라이버를 다른 프로젝트에서 훨씬 쉽게 다시 사용할 수 있습니다. 마스크의 영점 마스크는 처음 7비트에서 벗어났으며 마지막 비트만 표시하도록 합니다. 첫 번째 값의 경우 마지막 비트는 1; 두 번째 값의 경우 마지막 비트는 0입니다.) 이제 비트 마스크와 함께 동적 프로그래밍을 사용하는 또 다른 문제를 살펴보겠습니다.

0에서 2set_size-1까지의 각 숫자로 가는 모든 하위 집합을 반복하기 위해 위의 문제는 단순히 비트 마스크를 사용하고 복잡성은 O(2nn)입니다. 런타임시, 배경 위에 화면에 이미지를 넣어, 프로그램은 먼저 비트 와 드 링크 작업을 사용하여 원하는 좌표에서 이미지 마스크와 화면 픽셀의 비트를 마스크. 이렇게 하면 투명 영역의 배경 픽셀이 유지되고 겹친 이미지에 의해 가려질 픽셀의 비트를 0으로 재설정하면 됩니다. 우리의 주요 방법은 각 마스크에 값을 할당하고 (따라서 각 하위 집합에) 따라서 이미 계산 된 마스크의 값을 사용하여 새 마스크의 값을 계산하는 것입니다. 일반적으로 우리의 주요 목표는 마스크 1111111111에 대한 전체 집합 즉, 값 / 솔루션을 계산하는 것입니다. 일반적으로 하위 집합 X의 값을 찾기 위해 가능한 모든 방법으로 요소를 제거하고 얻은 하위 집합 X`1, X`2… X`k에 대한 값을 사용하여 X의 값/솔루션을 계산합니다. 즉, X`i의 값이 이미 계산되어 있어야 하므로 마스크를 고려할 순서를 설정해야 합니다.

그것은 자연 순서가 할 것입니다 것을 쉽게 볼 수 있습니다 : 해당 숫자의 증가 순서로 마스크를 통해 이동합니다. 또한 빈 하위 집합 X로 시작하고 가능한 모든 방법으로 요소를 추가하고 얻은 하위 집합 X`1, X`2… X`k의 값을 사용하여 X의 값/솔루션을 계산합니다. 지금까지 이 기사에서는 비트를 켜고 비트를 끄는 방법을 다루었지만 한 번에 모두 사용하지는 않았습니다. 때로는 값이 무엇인지 실제로 중요하지 않지만 현재의 가치와 반대로 만들어야합니다.