資料の 英語版 に戻るビット単位の整数演算
ビットごとの整数演算 (SPSS Modeler)
最終更新: 2024年10月07日
これらの関数を使用すると、整数を 2 つの補数値を表すビット・パターンとして扱うことができます。ここで、ビット位置 N
は重み 2**N
を持ちます。
ビットは0から上方向に番号付けされます。 これらの演算は、整数の符号ビットが左方向に無限に拡張されているかのように処理します。 つまり、最上位ビットを超えたすべての位置で、正の整数は 0 のビットを持ち、負の整数は 1 のビットを持ちます。
関数 | 結果 | 説明 |
---|---|---|
~~ INT1 |
整数 | INT1 のビット単位の補数を生成します。 つまり、 INT1 に 0が指定されているビット位置ごとに 1 が結果として返されます。 ~~ INT =
–(INT + 1) は常に true です。 |
INT1 || INT2 |
整数 | この演算の結果は、INT1 と INT2 のビット単位の「包括的論理和」 または です。 つまり、INT1 と INT2 のどちらかまたは両方に 1 がある各ビットが 1 になります。 |
INT1 ||/& INT2 |
整数 | この演算の結果は、INT1 と INT2 のビット単位の「排他的論理和」 または です。 つまり、INT1 と INT2 のどちらかにだけ (両方ではない) 1 がある各ビットが 1 になります。 |
INT1 && INT2 |
整数 | INT1 と INT2 のビット単位の「論理積」を生成します。 つまり、INT1 と INT2 の両方で 1 である各ビットが 1 になります。 |
INT1 &&~~ INT2 |
整数 | この演算の結果は、INT1 と、INT2 のビット単位の補数との、ビット単位の「論理積」です。 つまり、INT1 のあるビット位置の値が 1 で、INT2 の同じビット位置の値が 0 の場合に、結果は 1 になります。 これは INT1 && (~~INT2) と同じであり、INT2 内で設定された INT1 のビットを消去する場合に役に立ちます。 |
INT << N |
整数 | N の数だけ位置を左にシフトした INT1 のビット・パターンを生成します。 N の値が負の場合は、右にシフトします。 |
INT >> N |
整数 | N の数だけ位置を右にシフトした INT1 のビット・パターンを生成します。 N の値が負の場合は、左にシフトします。 |
INT1 &&=_0 INT2 |
ブール値 | ブール式 INT1 && INT2 /== 0 と同じですが、より効率的です。 |
INT1 &&/=_0 INT2 |
ブール値 | ブール式 INT1 && INT2 == 0 と同じですが、より効率的です。 |
integer_bitcount(INT) |
整数 | INT の 2 の補数表現の、1 または 0 のビットの数をカウントします。 INT が負ではない場合、N は 1 のビット数になります。 INT が負の場合、N は 0 のビット数になります。 符号の拡張のため、負ではない整数には無限大の数の 0 のビットがあります。また、負の整数には無限大の数の 1 のビットがあります。 integer_bitcount(INT) = integer_bitcount(-(INT+1)) は常に真です。 |
integer_leastbit(INT) |
整数 | 整数 INT の最下位ビット・セットのビット位置 N を返します。 N は、最も大きな 2 のべき乗です。N によって INT が正確に割られます。 |
integer_length(INT) |
整数 | INT の長さのビット数を、2 の補数の整数として返します。 つまり、N は、INT < (1 << N) if INT >= 0 INT >= (–1 <<
N) if INT < 0 のような最も小さい整数です。 INT が負ではない場合、INT を符号なし整数として表現するには、少なくとも N ビットのフィールドが必要です。 または、INT の符号にかかわらず、INT を符号付きの整数として表すには、少なくとも N+1 ビットが必要です。 |
testbit(INT, N) |
ブール値 | 整数 INT の N の位置にあるビットを検定し、ビット N の状態をブール値として返します。このブール値は、1 の場合は真 (true)、0 の場合は偽 (false) になります。 |