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


Swift Int64 multipliedFullWidth(by:)用法及代码示例


用法一

实例方法

multipliedFullWidth(by:)

返回一个元组,其中包含将此值乘以给定值的结果的高位和低位部分。

声明

func multipliedFullWidth(by other: Int64) -> (high: Int64, low: Int64.Magnitude)

返回值

一个元组,包含将此值与 other 相乘的结果的高位和低位部分。

参数

other

将此值乘以的值。

详述

使用此方法计算否则会溢出的产品的完整结果。与传统的截断乘法不同,multipliedFullWidth(by:) 方法返回一个元组,其中包含该值与 other 乘积的 highlow 部分。以下示例使用此方法将两个在相乘时通常会溢出的 UInt8 值相乘:


let x: UInt8 = 100
let y: UInt8 = 20
let result = x.multipliedFullWidth(by: y)
// result.high == 0b00000111
// result.low  == 0b11010000

xy 的乘积是 2000,它太大而无法在 UInt8 实例中表示。 result 值的highlow 属性在连接形成double-width 整数时表示2000;也就是说,使用result.high 作为高字节,result.low 作为UInt16 实例的低字节。


let z = UInt16(result.high) << 8 | UInt16(result.low)
// z == 2000

可用版本

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

用法二

实例方法

multipliedFullWidth(by:)

返回一个元组,其中包含将此值乘以给定值的结果的高位和低位部分。

声明

func multipliedFullWidth(by other: Self) -> (high: Self, low: Self.Magnitude)

返回值

一个元组,包含将此值与 other 相乘的结果的高位和低位部分。

参数

other

将此值乘以的值。

详述

使用此方法计算否则会溢出的产品的完整结果。与传统的截断乘法不同,multipliedFullWidth(by:) 方法返回一个元组,其中包含该值与 other 乘积的 highlow 部分。以下示例使用此方法将两个在相乘时通常会溢出的 Int8 值相乘:


let x: Int8 = 48
let y: Int8 = -40
let result = x.multipliedFullWidth(by: y)
// result.high == -8
// result.low  == 128

xy 的乘积是 -1920 ,它太大而无法在 Int8 实例中表示。 result 值的 highlow 组件在连接形成 double-width 整数时表示 -1920;也就是说,使用result.high 作为高字节,result.low 作为Int16 实例的低字节。


let z = Int16(result.high) << 8 | Int16(result.low)
// z == -1920

可用版本

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

相关用法


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