运算符 Shr(右移)
- 来源: https://www.freebasic.net/wiki/wikka.php?wakka=KeyPgOpShiftRight
- 最后更新: 2021-11-24
将数值表达式的位向右移动
语法
vb
declare operator Shr ( byref lhs as integer, byref rhs as integer ) as integer
declare operator Shr ( byref lhs as uinteger, byref rhs as uinteger ) as uinteger
declare operator Shr ( byref lhs as longint, byref rhs as longint ) as longint
declare operator Shr ( byref lhs as ulongint, byref rhs as ulongint ) as ulongint用法
` result = lhs Shr rhs
`
参数
lhs
左侧表达式。
rhs
右侧移位表达式。
返回值
返回 lhs 向右移动 rhs 次的结果。
描述
Operator Shr(右移)将左侧表达式(lhs)中的所有位向右移动由右侧表达式(rhs)指定的次数。数值上,结果与 "Int(lhs / 2 ^ rhs)" 相同。例如,"&b0101 Shr 1" 返回二进制数 &b010,"5 Shr 1" 返回 2。
如果左侧表达式是有符号且为负数,则移位后在左侧新创建的位中会复制符号位。例如,"-5 Shr 2" 返回 -2。
两个操作数均不以任何方式被修改。
当 rhs 的值小于零,或大于等于结果数据类型的位数时,此操作的结果是未定义的。
该运算符可为用户自定义类型重载。
示例
start GeSHi
vb
'Halve a number
For i As Integer = 0 To 10
Print 1000 Shr i, Bin(1000 Shr i, 16)
Next iend GeSHi
输出:
1000 0000001111101000
500 0000000111110100
250 0000000011111010
125 0000000001111101
62 0000000000111110
31 0000000000011111
15 0000000000001111
7 0000000000000111
3 0000000000000011
1 0000000000000001
0 0000000000000000方言差异
- 在 -lang qb 方言中不可用,除非通过别名
__Shr引用。
与 QB 的差异
- FreeBASIC 新增
参见
Operator Shr= (Shift Right and Assign)Operator Shl (Shift left)Bin- 数学函数
返回 目录