リファレンスガイド> SQL関数のTDVサポート> バイナリー関数> SHR関数
 
SHR機能
SHR関数は、数値の2進表現のビットを右シフトします。
サンプル構文
INT1SHR(arg1, arg2[, arg3])
備考
arg1をarg2ビットだけ右にシフトします。
シフトごとに、INTEGERの2番目に重要なビット(任意のサイズ)に0が配置され、最下位ビットがシフトアウトされます。
arg3が存在する場合、シフトされる前にarg1はarg3とANDされます。
左ビットシフトごとに数値が2倍になります。
arg1のバイナリー表現の最上位ビットは、符号ビットのように機能します。移動したり変更したりすることはありません。つまり、負の数は負のままであり、正の数は正のままです。
arg1が奇数(正または負)の場合、各位置シフトの結果は(arg1から1を引いたもの)を2で割ったものです。arg1が偶数の場合、結果はarg1を2で割ったものです。
Arg2は非負の数値(正または0)である必要があります。
次の表に、SHRの例を示します。ほとんどの例ではINT1を使用しています。
関数入力
結果
コメント
INT1SHR(1,0)
1
Arg2は0であるため、シフトは発生しません。
INT1SHR(1,1)
0
 
INT1SHR(2,1)
1
 
INT1SHR(3,1)
1
隣接するarg1値のペアは、同じ結果にマップされます。
INT1SHR(5,1)
2
5は奇数なので、結果は5 -1(=4)を2で割った値または2になります。
INT1SHR(-5,1)
-3
-5は奇数なので、結果は-5 -1(=-6)を2で割った値または-3になります。
INT2SHR(127,1)
63
 
INT2SHR(127,1,6)
3
Arg3が存在します。 4ビットと2ビットの両方が127(0111 1111)に設定されているため、ANDの結果は6になります。右に1つシフトすると3になります。
INT2SHR(127,17)
63
Arg2は9であり、1 mod 16(INT2のビット数)と同じであるため、結果はINT2SHR(127,1)と同じになります。
INT1SHR(-128,8)
-128
Arg 2は8であり、0 mod 8と同じであるため、結果はINT1SHR(-128,0)と同じです。つまり、シフトはありません。