4D v14.3ビットワイズ演算子 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v14.3
ビットワイズ演算子
ビットワイズ演算子
ビットワイズ演算子は、倍長整数式や値に対して演算を行います。 Note: ビットワイズ演算子に整数値または実数値を渡すと、4Dは値を倍長整数値として評価してから、ビットワイズ演算子を使用した式を計算します。 ビットワイズ演算子を使用する場合、倍長整数値を32ビットの配列と考える必要があります。これらのビットには、右から左に0~31の番号が付けられます。 それぞれのビットは0か1なので、倍長整数値は32の論理値を格納できる値と考えることもできます。1に等しいビットはTrue、0に等しいビットはFalseを意味します。 ビットワイズ演算子を使用する式は倍長整数値を返します。Bit Test演算子は例外的に式がブール値を返します。次の表にビットワイズ演算子とそのシンタックスを示します:
Notes (1) Left Bit ShiftおよびRight Bit Shift演算では、2番目のオペランドは、結果値において1番目のオペランドのビットがシフトされるビット数を示します。したがって、この2番目のオペランドは、0~32の間でなければなりません。0ビットシフトするとその値がそのまま返されます。また、31ビットより多くシフトするとすべてのビットがなくなるので、0x00000000が返されます。それ以外の値を2番目のオペランドとして渡した場合、結果は意味のない値になります。(2) Bit Set、Bit Clear、Bit Test演算では、2番目のオペランドは、作用の対象となるビット番号を示します。したがって、この2番目のオペランドは0~31の間です。そうでない場合、Bit SetとBit Clearに対しては1番目のオペランドがそのまま返され、Bit Testに対してはFalseが返されます。 次の表は、ビットワイズ演算子とその効果を示します:
(1) 次の表にそれぞれのビット演算子の例を示します:
(2) 4Dは多くの定義済み定数を提供しています。これらの定数の中には、そのリテラルが"bit"または"mask"で終わるものがあります。例えばテーマで提供される定数の場合を以下に示します:
これらの定数により、Get resource propertiesが返した値をテストしたり、SET RESOURCE PROPERTIESに渡す値を作成したりすることができます。リテラルが"bit"で終わる定数は、テスト、消去またはセットするビットの位置を指定します。リテラルが"mask"で終わる定数は、テスト、消去またはセットするビットが1の場合のみ、倍長整数値を指定します。 例えば、(変数$vlResAttrにプロパティを取得した) リソースがパージ可能かどうかをテストするには、以下のように記述します: If($vlResAttr ?? Purgeable resource bit) ` リソースはパージ可能か? または: If(($vlResAttr & Purgeable resource mask)#0) ` リソースはパージ可能か? 逆に、これらの定数を使用して同じビットを設定することもできます。以下のように記述します: $vlResAttr:=$vlResAttr ?+Purgeable resource bit または: $vlResAttr:=$vlResAttr |Purgeable resource bit (3) この例では、2つの整数値を倍長整数値に格納します。以下のように記述します: $vlLong:=($viIntA<<16)|$viIntB ` 2つの整数を倍長整数に格納 Tip: 倍長整数または整数の値を数値とビットワイズ演算子を組み合わせた式で処理する場合は注意が必要です。ハイビット(倍長整数の場合はビット31、整数の場合はビット15)は符号を設定します。その値が消去された場合には正の数で、値が設定された場合には負の数です。数値演算子はこのビットを使用して、値の符号を検出します。 ビットワイズ演算子はこのビットの意味を無視します。 |
プロパティ
プロダクト: 4D 参照
ピクチャ演算子 ARTICLE USAGE
ランゲージリファレンス ( 4D v12.4) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||