Go でビットごとの操作を使用して個々のビットを設定、クリア、チェックするにはどうすればよいでしょうか?

Barbara Streisand
リリース: 2024-11-10 03:43:02
オリジナル
850 人が閲覧しました

How can you set, clear, and check individual bits in Go using bitwise operations?

Go でのビット操作: 個々のビットの設定とクリア

Go では、整数内の個々のビットを操作することは、さまざまな用途に役立つテクニックとなります。アプリケーション。これを実現する 1 つの方法は、ビット単位の演算を使用することです。

ビットの設定

特定の位置にビットを設定するには、次の関数を使用できます。

func setBit(n int, pos uint) int {
    n |= (1 << pos)
    return n
}
ログイン後にコピー

この関数は、<< を使用して、数値 1 を指定された位置 (pos) だけ左にシフトすることによって動作します。オペレーター。これにより、対応するビットを有効にするマスクが作成されます。このマスクと元の整数の OR (|) を実行すると、他のビットを維持しながらターゲット ビットが 1 に設定されます。

ビットのクリア

ビットをクリアするには特定の位置のビットを指定するには、次の関数を使用できます。

func clearBit(n int, pos uint) int {
    mask := ^(1 << pos)
    n &= mask
    return n
}
ログイン後にコピー

この関数は、次の方法でマスクを作成します。 ^ 演算子を使用してターゲット位置のビットを反転します。結果のマスクでは、事実上、ターゲット ビットが 0 に設定されます。このマスクと元の整数の AND (&) を実行すると、ターゲット ビットはクリアされますが、他のビットは影響を受けません。

ビットのチェックis Set

最後に、次を使用してビットが設定されているかどうかを確認できますfunction:

func hasBit(n int, pos uint) bool {
    val := n & (1 << pos)
    return val > 0
}
ログイン後にコピー

この関数は、整数と、対応するビットが 1 に設定されているマスクの間で AND 演算を実行します。結果が 0 より大きい場合は、ターゲット ビットが設定されていることを示します。関数は true を返します。それ以外の場合は false を返します。

以上がGo でビットごとの操作を使用して個々のビットを設定、クリア、チェックするにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート