Skip to main content

数学: ビット単位の関数

ビット単位関数は、個々のビットのレベルで 1 つ以上のビットパターンまたは 2 進数で動作します。ビット単位関数を使用して、比較や計算のための値を操作します。ビット単位の関数はNumberデータ型でのみ使用でき、Int64結果を生成します。

重要

double/float値を引数として指定すると、64ビット整数に切り捨てられます。負の値は、2の補数、64ビットの整数として扱われます。つまり、-16および-16.9999は0xfffffffffffff0として扱われます。

BinaryAnd

BinaryAnd(n,m) : n と m の AND 演算の 2 進数を返します。nとmの両方が1の場合は1、それ以外の場合は0になります。0がfalseと同等で、1がtrueと同等であれば、BinaryAnd演算は論理Andのように動作します。結果値に小数点がないことに注意してください。結果は倍精度浮動小数点値ではなく整数です。

BinaryAnd(1,1) 1を返します

BinaryAnd(1,0) 0を返します

BinaryAnd(12,6) 4を返します

BinaryAnd(12.99, 6.99) 4を返します

BinaryAnd(-12, 6.99) 4を返します

BinaryNot

BinaryNot(n) : n の NOT 演算の 2 進数を返します。数値は64ビットの2の補数として扱われます。

BinaryNot(6) -7を返します

BinaryNot(2) -3を返します

BinaryNot(-1) 0を返します

BinaryNot(0) -1を返します

BinaryOr

BinaryOr(n,m) : n と m の OR 演算の 2 進数を返します。

BinaryOr(6,6) 6を返します

BinaryOr(6,2) 6を返します

BinaryOr(4,2) 6を返します

BinaryOr(12,6) 14を返します。

BinaryXOR

BinaryXOr(n,m) : n と m の XOR 演算の 2 進数を返します。

BinaryXOr(6,6) 0を返します

BinaryXOr(6,2) 4を返します

BinaryXOr(6,12) 10を返します。

ShiftLeft

ShiftLeft(n,b) : n を b ビット分左にシフトした値を整数で返します。

ShiftRight

ShiftRight(n,b) : n を b ビット分右にシフトした値を整数で返します。

ShiftLeftとShiftRightの両方で、結果はInt64になるため、64ビットしか使用できません。

ShiftLeft(pow(2,62),1) -pow(2,63)を返します 。もう一度左にシフトすると、ゼロになります。

ShiftRight(1,1) 0を返します。

ShiftRight(-1,1) Int64_Maxを返します