# Bit Instructions Overview

Source: https://rungs.dev/docs/ladder-logic/instructions/bit-instructions

> Reference for Ladder Logic bit instructions in rungs.dev — XIC, XIO, OTE, OTL, OTU, and ONS — the contacts and coils that examine or control a single BOOL value.

Bit instructions are the core of Ladder Logic. They examine or control a single `BOOL` value — a contact on the input side, a coil on the output side.

## Available Bit Instructions [#available-bit-instructions]

| Instruction           | Symbol                           | Purpose                                                                                                                 |
| --------------------- | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| [XIC](https://rungs.dev/docs/ladder-logic/instructions/xic)          |  | Passes power along the rung when the referenced bit is 1. Equivalent to a normally-open contact.                        |
| [XIO](https://rungs.dev/docs/ladder-logic/instructions/xio)          |  | Passes power along the rung when the referenced bit is 0. Equivalent to a normally-closed contact.                      |
| [OTE](https://rungs.dev/docs/ladder-logic/instructions/ote)          |  | Sets a bit to 1 while the rung is true and back to 0 when the rung goes false. The standard output coil.                |
| [OTL](https://rungs.dev/docs/ladder-logic/instructions/otl-otu)      |  | Latches a bit to 1 and leaves it on, even after the rung goes false. Pair with OTU to clear.                            |
| [OTU](https://rungs.dev/docs/ladder-logic/instructions/otl-otu)      |  | Unlatches a bit back to 0 while the rung is true. Pair with OTL.                                                        |
| [ONS](https://rungs.dev/docs/ladder-logic/instructions/one-shot-ons) |  | Makes a rung true for exactly one scan on each rising edge of its input. Requires a dedicated storage bit per instance. |

## Contacts vs Coils [#contacts-vs-coils]

- **Contacts** (`XIC`, `XIO`) go on the **left** side of a rung. They examine a bit and decide whether power continues along the rung.
- **Coils** (`OTE`, `OTL`, `OTU`) go on the **right** side of a rung. They act on a bit based on whether power reached them.

A rung always flows: _contacts → (optional more contacts) → coil_.

## Looking for NOT? [#looking-for-not]

There is no NOT **contact** in Ladder Logic. To invert a bit on a rung, use `XIO` instead of `XIC` — both examine the same tag, and `XIO` simply inverts the result. (The Move/Logical [`NOT` block](https://rungs.dev/docs/ladder-logic/instructions/logical) does exist, but it complements a whole `DINT` word, not a single bit.)

```ladder
XIO(Fault)OTE(Ready)
```

`Ready` energizes when `Fault = 0`.

## Next Steps [#next-steps]

- Examine inputs: [XIC](https://rungs.dev/docs/ladder-logic/instructions/xic) and [XIO](https://rungs.dev/docs/ladder-logic/instructions/xio)
- Drive outputs: [OTE](https://rungs.dev/docs/ladder-logic/instructions/ote), [OTL / OTU](https://rungs.dev/docs/ladder-logic/instructions/otl-otu)
- Detect transitions: [ONS](https://rungs.dev/docs/ladder-logic/instructions/one-shot-ons)