Binary Lesson 17 – Parity

📅 March 4, 2015
lesson17The word parity originates from the Latin word par, meaning equal. Take the sport of golf, for example. A hole on a golf course is usually assigned a par number. If you sink the golf ball into the hole with the same number of strokes as the par, you are said to be on par — equal to the number of expected strokes. If you expend more strokes than the par, then you need practice, and you should probably try again.

An identical strategy applies to computers. Parity is an early form of error detection often used with serial communications, such as modems and serial ports, for example. An extra bit is appended to each data byte to make the total number of 1 bits even or odd. This extra bit, called the parity bit, is separate from the data byte, and it does not contain data information. It is only used to make the total number of 1 bits even or odd.

There are two main types of parity: Even parity and odd parity. Both operate in the same manner aside from the evenness or oddness.

This lesson focuses on 8-bit data even though the concept can apply to any number of data bits, such as 7-bit ASCII.


Even Parity

The goal of even parity is to ensure that the total number of 1 bits across all nine bits (8 data bits plus 1 parity bit) is even. The transmitting computer takes a data byte and counts the number of 1 bits. If even, then the parity bit is set to 0. If odd, then the parity bit is set to 1 to make the total number even.


Even parity relies upon an even number of 1 bits.


Odd Parity

Odd parity operates the same as even parity except that the parity bit is adjusted to reflect an odd number of bits. If the number of data bits is odd, then the parity bit is set to 0. If the number of data bits is even, then the parity bit is set to 1 to make the total number of bits odd.


Odd parity relies upon an odd number of 1 bits.

Setting Parity

Both computers, the sending and receiving, must be set to operate with the same parity system. Both must be configured for even parity or odd parity in order to correctly interpret the parity bit and determine if transmission errors occurred.


Both systems involved in the communication must agree to the same parity setting.

Detecting Errors

Parity is calculated for each byte sent. When a byte is received by the receiving computer, it performs its own calculation by counting the number of 1 bits in the data byte. Then, it calculates what should be the parity bit based upon the byte received. If the total number of 1 bits (including the parity bit) is even or odd, depending upon the preset even parity or odd parity, then the byte is determined to be valid.


When transmission occurs without errors.

However, if an even parity system counts an odd number of 1 bits or an odd parity system counts an even number of 1 bits, then the byte is determined to be invalid and must be discarded. The receiving system must ask the transmitting system to resend the byte, which will hopefully be transmitted again without errors.


Oops! Something went wrong during transmission.

There might be slight variations to this operation, but the basic premise remains the same: The received bits must match the transmitted bits, and the way parity helps determine this is by counting the number of 1 bits received.

Validated Corruption (When the wrong bits are seen as “Okay”)

Parity is an extremely simple system. It can only detect errors. It cannot correct them. Neither can parity determine which bit has been corrupted. This can produce a case where a byte can be corrupted but still be detected as valid by the receiving system.

For example, for even parity, suppose one computer sends the byte 10010001. The ninth parity bit will be set to 1 to produce an even number of bits (4). If one bit is inverted during transmission, then the receiving system will detect it.


One bit became corrupted during transmission. However, parity alone does not know which bit was corrupted.

However, if two bits are inverted, then the total number of bits remains even.


Not good. If multiple bits are corrupted, there is the possibility that the result will still be even (for an even parity system) or odd (for an odd parity system), and this will trick the receiving system into thinking that the data is valid.

The receiving system would see the even number of bits in an even parity system and think that the byte is valid. This is one of the weaknesses of parity. There is no way to determine which or how many bits were corrupted if the corrupted result matches the even or odd parity requirements.

Despite this limitation, parity is still worth using since some detection is better than none at all, and it can be performed quickly at the hardware level.

  1. Leave a comment

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: