Non-return-to-zero

The pulses in NRZ have more energy than a return-to-zero (RZ) code, which also has an additional rest state beside the conditions for ones and zeros.

When used to represent data in an asynchronous communication scheme, the absence of a neutral state requires other mechanisms for bit synchronization when a separate clock signal is not available.

The two-level NRZI signal distinguishes data bits by the presence or absence of a transition at a clock boundary.

The NRZI encoded signal can be decoded unambiguously after passing through a data path that doesn’t preserve polarity.

Which bit value corresponds to a transition varies in practice, NRZI applies equally to both.

Consuming no more of the channel capacity than necessary to maintain bit clock synchronization without increasing costs related to complexity is a problem with many possible solutions.

Bit stuffing consumes channel capacity only when necessary but results in a variable information data rate.

[4] Return-to-zero describes a line code used in telecommunications in which the signal drops (returns) to zero between each pulse.

This means that a separate clock does not need to be sent alongside the signal, but suffers from using twice the bandwidth to achieve the same data-rate as compared to non-return-to-zero format.

Although return-to-zero contains a provision for synchronization, it still may have a DC component resulting in baseline wander during long strings of 0 or 1 bits, just like the line code non-return-to-zero.

The binary signal is encoded using rectangular pulse-amplitude modulation with polar NRZ(L), or polar non-return-to-zero-level code.
Unipolar NRZ(L), or unipolar non-return-to-zero level
Non-return-to-zero space
Encoder for NRZS, toggle on zero
An example of the NRZI encoding, transition on 1
The opposite convention, transition on 0
Encoder for NRZ-M, toggle on one