数学: ビット単位の関数
ビット単位関数は、個々のビットのレベルで 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を返します
。