> ## Documentation Index
> Fetch the complete documentation index at: https://docs.syntblaze.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Swift Overflow Subtraction

The `&-` operator is Swift's overflow subtraction operator. It performs integer subtraction while explicitly permitting the result to underflow the minimum bound of the given integer type. Instead of triggering a runtime trap (crash) upon underflow, the `&-` operator wraps the result around to the maximum representable values of that type using two's complement arithmetic.

## Syntax

```swift theme={"dark"}
let result = leftOperand &- rightOperand
```

## Mechanics and Behavior

In Swift, standard arithmetic operators (like `-`) are strictly bounds-checked. If a subtraction operation results in a value smaller than the type's `min` property, the Swift standard library raises a fatal error. The `&-` operator bypasses this bounds-checking mechanism.

When an underflow occurs using `&-`, the operation discards the borrow bit that extends beyond the available bit width of the integer type. The resulting bit pattern is interpreted according to whether the type is signed or unsigned.

### Unsigned Integer Wrapping

For unsigned integers, subtracting past `0` wraps around to the maximum value of that specific type (`UInt.max`).

```swift theme={"dark"}
let unsignedMin: UInt8 = 0
// Standard subtraction (unsignedMin - 1) would trap here.
let wrappedUnsigned = unsignedMin &- 1 

// Binary representation:
//   00000000 (0)
// - 00000001 (1)
// = 11111111 (255)
print(wrappedUnsigned) // Outputs: 255
```

### Signed Integer Wrapping

For signed integers, subtracting past the type's minimum value (`Int.min`) wraps around to the maximum positive value of that type (`Int.max`).

```swift theme={"dark"}
let signedMin: Int8 = -128
// Standard subtraction (signedMin - 1) would trap here.
let wrappedSigned = signedMin &- 1

// Binary representation (Two's complement):
//   10000000 (-128)
// - 00000001 (1)
// = 01111111 (127)
print(wrappedSigned) // Outputs: 127
```

## Type Constraints

The `&-` operator is defined exclusively for types conforming to the `FixedWidthInteger` protocol. It cannot be used with floating-point types (`Float`, `Double`), as floating-point numbers handle boundary conditions using IEEE 754 standards (such as `-Infinity` or `NaN`) rather than bitwise wrapping.

<div
  style={{ 
display: "flex", 
justifyContent: "space-between", 
alignItems: "center", 
maxWidth: "754px", 
padding: "1rem 0",
marginBottom: "24px"
}}
>
  <span style={{ fontWeight: "bold", fontSize: "1.25rem", color: "var(--tw-prose-headings)", fontFamily: "Inter, ui-sans-serif, system-ui, sans-serif" }}>Tired of Poor Swift Skills? Fix That With Deep Grasping!</span>

  <a
    href="https://syntblaze.com"
    target="_blank"
    style={{ 
  marginLeft: "24px",
  textDecoration: "none", 
  backgroundColor: "#007AFF",
  color: "#ffffff", 
  padding: "6px 16px", 
  borderRadius: "16px",
  fontSize: "0.9rem",
  fontWeight: "600",
  textAlign: "center",
  transition: "background-color 0.2s ease"
}}
  >
    Learn More
  </a>
</div>

<div style={{ display: "flex", gap: "12px", flexWrap: "wrap" }}>
  <img src="https://mintcdn.com/syntblazellc/-L0ums_2lctDSZ1l/images/skill-tracking.png?fit=max&auto=format&n=-L0ums_2lctDSZ1l&q=85&s=b9b0305c93bb501c9e767b5c76c88835" style={{ width: "30%", minWidth: 60 }} width="621" height="1344" data-path="images/skill-tracking.png" />

  <img src="https://mintcdn.com/syntblazellc/23tyuOzaWS88qFlc/images/nuggets.png?fit=max&auto=format&n=23tyuOzaWS88qFlc&q=85&s=c86c80197299762989e9b882419b2109" style={{ width: "30%", minWidth: 60 }} width="621" height="1344" data-path="images/nuggets.png" />

  <img src="https://mintcdn.com/syntblazellc/-L0ums_2lctDSZ1l/images/bite-sized-exercises.png?fit=max&auto=format&n=-L0ums_2lctDSZ1l&q=85&s=a65f9a38c37ff28ab73ed783c53c60e3" style={{ width: "30%", minWidth: 60 }} width="621" height="1344" data-path="images/bite-sized-exercises.png" />
</div>

<div style={{ display: "flex", gap: "12px", flexWrap: "wrap", marginTop: "12px" }}>
  <img src="https://mintcdn.com/syntblazellc/-L0ums_2lctDSZ1l/images/mastery-chain.png?fit=max&auto=format&n=-L0ums_2lctDSZ1l&q=85&s=748a1763454713e679260fbb95f154a2" style={{ width: "30%", minWidth: 60 }} width="621" height="1344" data-path="images/mastery-chain.png" />

  <img src="https://mintcdn.com/syntblazellc/-L0ums_2lctDSZ1l/images/element-previews.png?fit=max&auto=format&n=-L0ums_2lctDSZ1l&q=85&s=242f61448ff5dd6deaaab2dccc13b507" style={{ width: "30%", minWidth: 60 }} width="621" height="1344" data-path="images/element-previews.png" />

  <img src="https://mintcdn.com/syntblazellc/-L0ums_2lctDSZ1l/images/element-explanations.png?fit=max&auto=format&n=-L0ums_2lctDSZ1l&q=85&s=cf0fc1c31f9cd0fc26716781be05fbc9" style={{ width: "30%", minWidth: 60 }} width="621" height="1344" data-path="images/element-explanations.png" />
</div>
