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


Swift UInt &<<(_:_:)用法及代码示例


用法一

操作符

&<<(_:_:)

返回将值的二进制表示向左移动指定位数的结果,将移位量屏蔽为类型的位宽。

声明

static func &<< (lhs: Self, rhs: Self) -> Self

参数

lhs

要转移的值。

rhs

lhs 向左移动的位数。如果 rhs 超出范围 0..<lhs.bitWidth ,则会对其进行屏蔽以生成该范围内的值。

详述

当您需要执行移位并确保移位量在 0..<lhs.bitWidth 范围内时,请使用掩码左移运算符 (&<<)。在移位之前,掩蔽左移运算符将移位掩蔽到该范围。使用此屏蔽值执行移位。

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


let x: UInt8 = 30                 // 0b00011110
let y = x &<< 2
// y == 120                       // 0b01111000

但是,如果您使用8作为移位量,该方法首先将移位量屏蔽为零,然后执行移位,导致原始值没有变化。


let z = x &<< 8
// z == 30                        // 0b00011110

如果移位整数类型的位宽是 2 的幂,则使用位掩码执行掩码;否则,使用模运算执行屏蔽。

可用版本

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

用法二

操作符

&<<(_:_:)

返回将值的二进制表示向左移动指定位数的结果,将移位量屏蔽为类型的位宽。

声明

static func &<< (lhs: UInt, rhs: UInt) -> UInt

参数

lhs

要转移的值。

rhs

lhs 向左移动的位数。如果 rhs 超出范围 0..<lhs.bitWidth ,则会对其进行屏蔽以生成该范围内的值。

详述

当您需要执行移位并确保移位量在 0..<lhs.bitWidth 范围内时,请使用掩码左移运算符 (&<<)。在移位之前,掩蔽左移运算符将移位掩蔽到该范围。使用此屏蔽值执行移位。

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


let x: UInt8 = 30                 // 0b00011110
let y = x &<< 2
// y == 120                       // 0b01111000

但是,如果您使用8作为移位量,该方法首先将移位量屏蔽为零,然后执行移位,导致原始值没有变化。


let z = x &<< 8
// z == 30                        // 0b00011110

如果移位整数类型的位宽是 2 的幂,则使用位掩码执行掩码;否则,使用模运算执行屏蔽。

可用版本

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 向左移动的位数。如果 rhs 超出范围 0..<lhs.bitWidth ,则会对其进行屏蔽以生成该范围内的值。

详述

当您需要执行移位并确保移位量在 0..<lhs.bitWidth 范围内时,请使用掩码左移运算符 (&<<)。在移位之前,掩蔽左移运算符将移位掩蔽到该范围。使用此屏蔽值执行移位。

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


let x: UInt8 = 30                 // 0b00011110
let y = x &<< 2
// y == 120                       // 0b01111000

但是,如果您使用8作为移位量,该方法首先将移位量屏蔽为零,然后执行移位,导致原始值没有变化。


let z = x &<< 8
// z == 30                        // 0b00011110

如果移位整数类型的位宽是 2 的幂,则使用位掩码执行掩码;否则,使用模运算执行屏蔽。

可用版本

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

相关用法


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