문제 이해
질문이 어려운 문제를 야기합니다 : 바이트가 주어지면 개별 비트를 어떻게 추출할 수 있나요? 이 연산은 바이트 간 해밍 거리 계산과 같은 작업에 필수적입니다.
Go의 비트 조작
Go는 비트를 조작하기 위한 다양한 비트 연산자를 제공합니다. 비트 추출의 핵심은 비트 AND 연산자(&)를 사용하는 데 있습니다.
특정 방법
바이트의 n번째 비트를 얻으려면 다음과 같은 마스크를 사용합니다. 숫자 2(n-1)입니다. 예를 들어, byte(1)의 첫 번째 비트를 얻으려면 byte(1)인 마스크 20을 사용합니다. 그런 다음 비트 AND 연산을 수행합니다.
<code class="go">result = byte(1) & byte(1) // Output: 1</code>
결과가 마스크와 동일하면 비트가 1임을 의미합니다. 그렇지 않으면 0입니다.
예: 해밍 거리 계산
다음은 두 바이트 배열 사이의 해밍 거리를 계산하는 샘플 함수입니다.
<code class="go">func hamming(a, b []byte) (int, error) { diff := 0 for i := 0; i < len(a); i++ { for j := 0; j < 8; j++ { mask := byte(1 << uint(j)) if (a[i] & mask) != (b[i] & mask) { diff++ } } } return diff, nil }</code>
이 함수는 비트 조작을 사용하여 두 바이트 간의 개별 비트를 비교함으로써 해밍 거리를 효율적으로 계산합니다.
위 내용은 Go의 바이트에서 개별 비트를 어떻게 추출할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!