ホームページ  >  記事  >  バックエンド開発  >  Goでバイトからビット表現を抽出するにはどうすればよいですか?

Goでバイトからビット表現を抽出するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-04 02:49:021006ブラウズ

How to Extract Bit Representations from Bytes in Go?

Go でバイトからビット表現を取得する方法

問題:

バイトのビット表現を決定します。 byte(1) から "00000001" を取得する場合と同様です。

解決策:

ビット表現を抽出するには 2 つのアプローチがあります:

  1. 書式設定を使用した視覚的表現:

    • fmt.Sprintf(" b", ...) を使用します。これにより、先頭にゼロを付けたバイトのビットの文字列表現が生成され、8 ビット形式が保証されます。
  2. 数学的演算のビット演算:

    • ビットごとの AND 演算子を使用して特定のビットを計算します。
    • 目的のビットを 1 に設定し、その他のビットを 0 (2n-1) に設定してマスクを作成します。
    • バイトとマスクのビット単位の AND を実行します。
    • 結果がマスクと等しい場合、ビットは 1 です。それ以外の場合は 0 です。

例:

byte(13) のビットを見つけるには:

<code class="go">fmt.Print(13 & 1) // Output: 1
fmt.Print(13 & 2) // Output: 0
fmt.Print(13 & 4) // Output: 4
fmt.Print(13 & 8) // Output: 8</code>

これは、13 のビット表現が「00001101」であることを示しています。

補足:

バイト間のハミング距離を計算するために、提供されたコードはビット単位を使用します。各ビットを個別に比較する演算。この関数は、不一致ビットの数をカウントし、距離を返します。

以上がGoでバイトからビット表現を抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。