インスタンスメソッド
multipliedFullWidth(by:)
この値と与えられた値を乗算した結果の上位部分と下位部分を含むタプルを返します。
iOS 8.0+ iPadOS 8.0+
Mac Catalyst 13.0+ macOS 10.10+
tvOS 9.0+ visionOS 1.0+ watchOS 2.0+
func multipliedFullWidth(by other: Self) -> (high: Self, low: Self.Magnitude)
パラメータ
other
この値に乗算すべき値。
戻り値
この値と other を乗算した結果の上位部分と下位部分を含むタプル。
議論
このメソッドは、それ以外ではオーバーフローしてしまう積の完全な結果を計算するために使用します。従来の切り捨て乗算とは異なり、multipliedFullWidth(by:) メソッドは、この値と other の積の上位と下位の両方を含むタプルを返します。以下の例では、このメソッドを使用して、通常は乗算するとオーバーフローしてしまう 2 つの Int8 値を乗算しています。
- let x: Int8 = 48
- let y: Int8 = -40
- let result = x.multipliedFullWidth(by: y)
- // result.high == -8
- // result.low == 128
x と y の積は -1920 ですが、これは Int8 インスタンスでは表現できないほど大きいです。result 値の上位要素と下位要素を連結して倍幅整数にすると、-1920 になります。つまり、Int16 インスタンスの上位バイトを result.high とし、下位バイトを result.low とします。
- let z = Int16(result.high) << 8 | Int16(result.low)
- // z == -1920
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ