Skip to content

运算符 Shr(右移)


将数值表达式的位向右移动

语法

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 i

end 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
  • 数学函数

返回 目录

基于 FreeBASIC 官方文档翻译 如有侵权请联系我们删除
FreeBASIC 是开源项目,与微软公司无隶属关系