Open1

dividingFullWidth(_:)についてのメモ

nabeyangnabeyang

https://developer.apple.com/documentation/swift/fixedwidthinteger/dividingfullwidth(_:)
double width intergerを割って、商と余りを返す。ただし、オーバーフローしている部分は切られる。

    let a: UInt8 = 5
    let b: UInt16 = UInt16.max
    let high = UInt8(b >> 8)
    let low = UInt8(b - (UInt16(high) << 8))
    let dividend = (high, low)

    let v = a.dividingFullWidth(dividend)
    XCTAssertEqual(v.quotient, 51)
    XCTAssertEqual(UInt8(truncatingIfNeeded: 0x3333), 51)
    XCTAssertEqual(v.remainder, 0)