In telecommunication, coded mark inversion (CMI) is a non-return-to-zero (NRZ) line code.
The level used for one bits alternates each time one is coded.
This is vaguely reminiscent of, but quite different from, Miller encoding, which also uses half-bit and full-bit pulses, but additionally uses the half-one/half-zero combination and arranges them so that the signal always spends at least a full bit time at a particular level before transitioning again.
CMI doubles the bitstream frequency, when compared to its simple NRZ equivalent, but allows easy and reliable clock recovery.
This computer science article is a stub.