sql >> データベース >  >> RDS >> Oracle

オラクルビットアンド関数

    バイナリでは、「set」は「値が1である」ことを意味します。 「未設定」とは、「値が0である」ことを意味します。

    BITANDのOracleドキュメントから:

    「結果はいくつかのステップで計算されます。最初に、各引数Aが値SIGN(A)* FLOOR(ABS(A))に置き換えられます。この変換は、各引数をゼロに向かって切り捨てる効果があります。次に、各引数A(現在は整数値です)は、nビットの2の補数の2の補数整数値に変換されます。2つのビット値は、ビット単位のAND演算を使用して結合されます。最後に、結果のnビットの2の補数値はNUMBERに変換されます。 "

    簡単に言うと、この関数は引数を切り捨てて2進数(現在は128ビットに制限)に変換し、2つの2進数をANDして、2進数をNUMBERに戻した結果を返します。

    ゼロと1のすべての可能な組み合わせの結果は次のとおりです。

    SELECT BITAND(0, 0) AS "0, 0",  -- i.e. 0 AND 0 = 0
           BITAND(0, 1) AS "0, 1",  -- i.e. 0 AND 1 = 0
           BITAND(1, 0) AS "1, 0",  -- i.e. 1 AND 0 = 0
           BITAND(1, 1) AS "1, 1"   -- i.e. 1 AND 1 = 1
      FROM DUAL;
    

    より複雑な例は、11と5をANDすることです。2進数では、10進数の11は「1011」になります。 10進数の5は「0101」の2進数になります。

    のように、これらの値をANDする場合
    1 0 1 1
    0 1 0 1
    -------
    0 0 0 1
    

    1つのバイナリを取得しますが、10進数に戻すと1のままです。

    共有してお楽しみください。




    1. MySQLの日時フィールドにNULL値を保存する方法は?

    2. Java-前日として保存された日付

    3. 他のユーザーが変更を加えたときにWindowsプログラムを更新しますか?

    4. MySQLタイムゾーンの混乱