スクリプト/ビット演算関数(履歴ID:720)
最終投稿者: shainy
更新:2018/08/10 01:40:19
概要
ビット演算関数は数値を10進数ではなく、符号付き32ビット整数を2進表現したものとして扱います。例えば、10進数の10は00000000000000000000000000001010です。ビット演算関数はこのように2進表現にした上で演算を行いますが、標準のArrpの数値を返します。
使用できる関数には次のものがあります。
演算関数 | 記述例 | 説明 |
---|---|---|
ビットAND | bitwiseAND(a, b) | 対応するビットがともに1である各ビットについて1を返します。 |
ビットOR | bitwiseOR(a, b) | 対応するビットがどちらかまたはともに1である各ビットについて1を返します。 |
ビットXOR | bitwiseXOR(a, b) | 対応するビットがどちらか一方のみ1である各ビットについて1を返します。 |
ビットNOT | bitwiseNOT(value) | 各ビットを反転します。 |
左シフト | leftShift(a, b) | 2進表現のaをbビット分だけ左にシフトします。 |
右シフト | rightShift(a, b) | 2進表現のaをbビット分だけ右にシフトします。 |
目次
導入方法
ビット演算関数は標準のArrpでは使うことができません。あなたのゲームに導入するには、以下のソースコードをコピーしてあなたのスクリプトに貼り付けてください。またこのとき開始スクリプトで行わないと、他のシーンやマップでは使うことができません。
以下ソースコード。
false
ビット演算関数
ビットAND(bitwiseAND関数)
ゲームタイプ | 利用 |
---|---|
2DアクションRPG | Yes |
2DRPG | Yes |
ノベルゲーム | Yes |
同じ位置のビットを比較してどちらも1の場合だけ1に、それ以外は0にします。
and = bitwiseAND(a, b)
- 第1引数は演算する整数
- 第2引数は演算する整数
- 返り値は第1引数と第2引数のビットAND
11と14のビットANDは10が返ります。
and = bitwiseAND(11, 14) speak(and) #10
11と14を2進表現にします。各ビットを比較し両方が1の場合は1に、それ以外(1と0、0と0など)の場合は0にします。その結果2進数の1000となり、10進数の10が返ります。
0000 0000 0000 0000 0000 0000 0000 1011 = 11 0000 0000 0000 0000 0000 0000 0000 1110 = 14 ---- ---- ---- ---- ---- ---- ---- ---- -- 0000 0000 0000 0000 0000 0000 0000 1010 = 10
ビットOR(bitwiseOR関数)
ゲームタイプ | 利用 |
---|---|
2DアクションRPG | Yes |
2DRPG | Yes |
ノベルゲーム | Yes |
同じ位置のビットを比較してどちらかが1の場合は1に、どちらも0の場合は0にします。
or = bitwiseOR(a, b)
- 第1引数は演算する整数
- 第2引数は演算する整数
- 返り値は第1引数と第2引数のビットOR
10と12のビットORは14が返ります。
or = bitwiseOR(10, 12) speak(or) #14
10と12を2進表現にします。各ビットを比較しどちらかが1の場合(どちらも1の場合も含む)は1に、どちらも0の場合は0にします。その結果2進数の1110となり、10進数の14が返ります。
0000 0000 0000 0000 0000 0000 0000 1010 = 10 0000 0000 0000 0000 0000 0000 0000 1100 = 12 ---- ---- ---- ---- ---- ---- ---- ---- -- 0000 0000 0000 0000 0000 0000 0000 1110 = 14
ビットXOR(bitwiseXOR関数)
ゲームタイプ | 利用 |
---|---|
2DアクションRPG | Yes |
2DRPG | Yes |
ノベルゲーム | Yes |
同じ位置のビットを比較してどちらか一方だけが1の場合は1に、それ以外は0にします。
xor = bitwiseXOR(a, b)
- 第1引数は演算する整数
- 第2引数は演算する整数
- 返り値は第1引数と第2引数のビットXOR
10と12のビットXORは6が返ります。
xor = bitwiseXOR(10, 12) speak(xor) #6
10と12を2進表現にします。各ビットを比較しどちらか一方だけが1の場合は1に、それ以外は0にします。ビットORとは異なり、1と1の場合は0になります。その結果2進数の110となり、10進数の6が返ります。
0000 0000 0000 0000 0000 0000 0000 1010 = 10 0000 0000 0000 0000 0000 0000 0000 1100 = 12 ---- ---- ---- ---- ---- ---- ---- ---- -- 0000 0000 0000 0000 0000 0000 0000 0110 = 6
ビットNOT(bitwiseNOT関数)
ゲームタイプ | 利用 |
---|---|
2DアクションRPG | Yes |
2DRPG | Yes |
ノベルゲーム | Yes |
ビットを反転します。
not = bitwiseNOT(value)
- 第1引数は演算する整数
- 返り値は第1引数のビットNOT
10のビットNOTは-11が返ります。
not = bitwiseNOT(10) speak(not) #-11
10を2進表現にします。各ビットを0の場合は1に、1の場合は0にします。その結果2進数の11111111111111111111111111110101となり、10進数の-11が返ります。
0000 0000 0000 0000 0000 0000 0000 1010 = 10 ---- ---- ---- ---- ---- ---- ---- ---- --- 1111 1111 1111 1111 1111 1111 1111 0101 = -11
左シフト(leftShift関数)
ゲームタイプ | 利用 |
---|---|
2DアクションRPG | Yes |
2DRPG | Yes |
ノベルゲーム | Yes |
右シフト(rightShift関数)
ゲームタイプ | 利用 |
---|---|
2DアクションRPG | Yes |
2DRPG | Yes |
ノベルゲーム | Yes |
※編集中※