Go에서 바이트 값을 조작할 때 개별 비트를 사용하여 작업해야 하는 경우가 많습니다. 이 문서에서는 바이트 값 1에 대한 비트 표현을 결정하는 특정 과제를 해결하면서 바이트에서 비트 표현을 추출하는 방법을 살펴봅니다.
바이트의 비트를 시각적으로 표현하려면 다른 사람들이 제안한 대로 fmt.Sprintf(" b", ...)를 사용할 수 있습니다. 그러나 비트와 관련된 수학 연산의 경우 비트 연산자가 필수적입니다.
바이트의 n번째 비트를 결정하려면 해당 바이트와 다음 바이트 사이에 비트 AND 연산(&)을 수행합니다. n번째 비트가 1(마스크)로 설정됩니다. 이 마스크는 2n-1으로 계산됩니다.
숫자 13(00001101)의 첫 번째 비트를 찾으려면 마스크합니다. 2<0 = 1 (00000001):
fmt.Print(13 & 1) // Output: 1
결과는 1이며 첫 번째 비트가 1임을 나타냅니다.
두 바이트 측정값 사이의 Hamming 거리 다양한 비트의 수. 다음은 두 바이트 배열(주어진 시나리오에서는 단일 바이트 배열) 사이의 해밍 거리를 계산하는 함수입니다.
func hamming(a, b []byte) (int, error) { if len(a) != len(b) { return 0, errors.New("a b are not the same length") } diff := 0 for i := 0; i < len(a); i++ { b1 := a[i] b2 := b[i] for j := 0; j < 8; j++ { mask := byte(1 << uint(j)) if (b1 & mask) != (b2 & mask) { diff++ } } } return diff, nil }
이 함수는 비트 AND 연산을 사용하여 바이트 배열의 해당 비트를 비교합니다. Go Playground는 사용법을 보여줍니다:
https://play.golang.org/p/O1EGdzDYAn
위 내용은 Go에서 바이트 값의 비트 표현을 어떻게 추출할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!