目次→
演算子→
算術演算子→
Operator Shr (Shift right)←オリジナル・サイト
数値の式のビットを、右に移動させます。
構文:
用法:
result = lhs Shr rhs
パラメタ:
lhs
左側の式。
rhs
右側の、移動させる数の式。
戻り値:
lhs を、rhs の数だけ、右に移動した結果を返します。
記述:
演算子 Shr (右シフト) は、左側の式 (
lhs) の全てのビットを、右側の式 (
rhs) で指定された数だけ、右方向に、移動させます。
これには、一つシフトする毎に、
lhs を 2 で割るという効果があります。
つまり、結果は、 "
Int(lhs / 2 ^ rhs)"と同じです。
例えば、"
&b0101 Shr 1" は、2進数の
&b010 を返します。そして、"
5 Shr 1" は、2 を返します。
左側の式が符号付きで負数なら、符号ビットは、シフトの後に、新たに作成されたビットの左に、コピーされます。
例えば、"-5 Shr 2" は、-2 を返します。
演算対象のどちらも、何らかの方法で変更されません。
この操作の結果は、0未満の rhs の値、あるいは結果のデータ型のビットの数以上の rhs の値には、不確定です。
この演算子を、ユーザ定義型のために、多重定義することができます。
例:
'数を半分にします
For i As Integer = 0 To 10
Print 1000 Shr i, Bin
(1000 Shr i, 16)
Next i
Sleep
出力:
1000 0000001111101000
500 0000000111110100
250 0000000011111010
125 0000000001111101
62 0000000000111110
31 0000000000011111
15 0000000000001111
7 0000000000000111
3 0000000000000011
1 0000000000000001
0 0000000000000000
方言差:
-
別名 __Shr と共に参照をつけないと、-lang qb 方言で利用できません。
QBからの違い:
参照: