当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Swift Int32 >>(_:_:)用法及代码示例


用法一

操作符

>>(_:_:)

返回将值的二进制表示向右移动指定位数的结果。

声明

static func >> <RHS>(lhs: Self, rhs: RHS) -> Self where RHS : BinaryInteger

参数

lhs

要转移的值。

rhs

向右移动 lhs 的位数。

详述

>> 运算符执行 smart shift ,它定义了任何值移位的结果。

  • 使用 rhs 的负值使用 abs(rhs) 执行左移。

  • 使用大于或等于 lhs 位宽的 rhs 的值是 overshift 。对于负值 lhs0 对于非负值,过度移位会导致 -1

  • rhs 使用任何其他值都会对lhs 执行该量的右移。

以下示例将 x 定义为 UInt8 的一个实例,这是一个 8 位无符号整数类型。如果在对 x 的操作中使用 2 作为右侧值,则该值将右移两位。


let x: UInt8 = 30                 // 0b00011110
let y = x >> 2
// y == 7                         // 0b00000111

如果将 11 用作 rhs ,则 x 会过度移位,使其所有位都设置为零。


let z = x >> 11
// z == 0                         // 0b00000000

使用负值作为 rhs 与使用 abs(rhs) 执行左移相同。


let a = x >> -3
// a == 240                       // 0b11110000
let b = x << 3
// b == 240                       // 0b11110000

对负值进行右移操作 “fill in” 用 1 代替 0 的高位。


let q: Int8 = -30                 // 0b11100010
let r = q >> 2
// r == -8                        // 0b11111000


let s = q >> 11
// s == -1                        // 0b11111111

可用版本

iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+

用法二

操作符

>>(_:_:)

返回将值的二进制表示向右移动指定位数的结果。

声明

static func >> <Other>(lhs: Self, rhs: Other) -> Self where Other : BinaryInteger

参数

lhs

要转移的值。

rhs

向右移动 lhs 的位数。

详述

>> 运算符执行 smart shift ,它定义了任何值移位的结果。

  • 使用 rhs 的负值使用 abs(rhs) 执行左移。

  • 使用大于或等于 lhs 位宽的 rhs 的值是 overshift 。对于负值 lhs0 对于非负值,过度移位会导致 -1

  • rhs 使用任何其他值都会对lhs 执行该量的右移。

以下示例将 x 定义为 UInt8 的一个实例,这是一个 8 位无符号整数类型。如果在对 x 的操作中使用 2 作为右侧值,则该值将右移两位。


let x: UInt8 = 30                 // 0b00011110
let y = x >> 2
// y == 7                         // 0b00000111

如果将 11 用作 rhs ,则 x 会过度移位,使其所有位都设置为零。


let z = x >> 11
// z == 0                         // 0b00000000

使用负值作为 rhs 与使用 abs(rhs) 执行左移相同。


let a = x >> -3
// a == 240                       // 0b11110000
let b = x << 3
// b == 240                       // 0b11110000

对负值进行右移操作 “fill in” 用 1 代替 0 的高位。


let q: Int8 = -30                 // 0b11100010
let r = q >> 2
// r == -8                        // 0b11111000


let s = q >> 11
// s == -1                        // 0b11111111

可用版本

iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+

相关用法


注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 Int32 >>(_:_:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。