Error Detection Methods (Cambridge (CIE) O Level Computer Science)

Revision Note

Robert Hampton

Written by: Robert Hampton

Reviewed by: James Woodhouse

Parity Check

What is a parity check?

  • A parity check determines whether bits in a transmission have been corrupted

  • Every byte transmitted has one of its bits allocated as a parity bit

  • The sender and receiver must agree before transmission whether they are using odd or even parity

  • If odd parity is used then there must be an odd number of 1’s in the byte, including the parity bit

  • If even parity is used then there must be an even number of 1’s in the byte, including the parity bit

  • The value of the parity bit is determined by counting the number of 1’s in the byte, including the parity bit

  • If the number of 1’s does not match the agreed parity then an error has occurred

  • Parity checks only check that an error has occurred, they do not reveal where the error(s) occurred

Even parity

  • Below is an arbitrary binary string

EVEN
Parity bit

Byte

0

1

0

1

1

0

1

0

  • If an even parity bit is used then all bits in the byte, including the parity bit, must add up to an even number

    • There are four 1’s in the byte

    • This means the parity bit must be 0 otherwise the whole byte, including the parity bit, would add up to five which is an odd number

Odd parity

  • Below is an arbitrary binary string

ODD
Parity bit

Byte

1

1

0

1

1

0

1

0

  • If an odd parity bit is used then all bits in the byte, including the parity bit, must add up to an odd number

    • There are four 1’s in the byte. This means the parity bit must be a 1 otherwise the whole byte, including the parity bit, would add up to four which is an even number

  • The table below shows a number of examples of the agreed parity between a sender and receiver and the parity bit used for each byte

Example #

Agreed parity

Parity bit

Main bit string

Total number of 1’s

#1

ODD

0

1

1

0

1

0

1

1

5

#2

EVEN

1

0

0

0

1

0

0

0

2

#3

EVEN

1

0

1

0

1

1

1

1

6

#4

ODD

1

0

1

1

1

0

0

1

5

#5

ODD

1

1

0

1

0

1

0

1

5

#6

EVEN

0

1

0

0

1

1

1

0

4

  • Example #1: The agreed parity is odd. All of the 1’s in the main bit string are added (5). As this number is odd already the parity bit is set to 0 so the whole byte stays odd

  • Example #2: The agreed parity is even. All of the 1’s in the main bit string are added (1). As this number is odd the parity bit is set to 1 to make the total number of 1’s even (2)

  • Example #6: The agreed parity is even. All of the 1’s in the main bit string are added (4). As this number is even already the parity bit is set to 0 so the whole byte stays even

How do errors occur?

  • When using parity bits, an error occurs when the number of total bits does not match the agreed parity

  • Bits can be flipped or changed due to interference on a wire or wirelessly due to weather or other signals

Example #

Agreed parity

Parity bit

Main bit string

Total number of 1’s

Error

#1

ODD

1

1

1

0

1

0

1

1

6

Error

#2

EVEN

1

0

0

0

1

0

0

0

2

No error

#3

EVEN

1

0

1

1

1

1

1

1

7

Error

#4

ODD

1

0

1

1

1

0

0

1

5

No error

#5

ODD

1

1

0

1

0

1

1

1

6

Error

#6

EVEN

0

1

0

0

0

1

1

0

3

Error

  • Parity checks are quick and easy to implement but fail to detect bit swaps that cause the parity to remain the same

Parity Byte & Block Check

What are parity byte & block checks?

  • Parity blocks and parity bytes can be used to check an error has occurred and where the error is located

  • Parity checks on their own do not pinpoint where errors in data exist, only that an error has occurred

  • A parity block consists of a block of data with the number of 1’s totalled horizontally and vertically

  • A parity byte is also sent with the data which contains the parity bits from the vertical parity calculation

  • Below is a parity block with a parity byte at the bottom and a parity bit column in the second column

ODD

Parity bit

Bit 2

Bit 3

Bit 4

Bit 5

Bit 6

Bit 7

Bit 8

Byte 1

0

1

1

0

1

0

1

1

Byte 2

0

0

0

0

1

0

0

0

Byte 3

1

0

1

0

1

1

1

1

Byte 4

1

0

1

1

1

0

0

1

Byte 5

1

1

0

1

0

1

0

1

Byte 6

1

1

0

0

1

1

1

0

Byte 7

0

0

1

1

1

1

1

0

Byte 8

0

1

0

1

1

0

0

0

Parity byte

0

1

1

1

1

1

1

1

  • The above table uses odd parity

  • Each byte row calculates the horizontal parity as a parity bit as normal

  • Each bit column calculates the vertical parity for each row, the parity byte

  • It is calculated before transmission and sent with the parity block

  • Each parity bit tracks if a flip error occurred in a byte while the parity byte calculates if an error occurred in a bit column

  • By cross referencing both horizontal and vertical parity values the error can be pinpointed

  • In the above example the byte 3 / bit 5 cell is the error and should be a 0 instead

  • The error could be fixed automatically or a retransmission request could be sent to the sender

Checksum

What is a checksum?

  • A checksum is a value that can be used to determine if data has been corrupted or altered

  • It indicates whether data differs from its original form but does not specify where

  • Checksums are calculated using an algorithm and the value is added to the transmission

  • The receiving device re-calculates the checksum and compares to the original

  • If the checksums do not match, it is assumed an error has occurred

Worked Example

Describe the process a checksum algorithm uses to determine if an error has occurred

[5]

Answer

  • Before data is transmitted a checksum value is calculated [1]

  • The checksum value is transmitted with the data  [1]

  • The receiver calculates the checksum value using the received data  [1]

  • The calculated checksum is compared to the transmitted checksum [1]

  • If they are the same then there is no error otherwise an error has occurred [1]

Echo Check

What is an echo check?

  • An echo checks involve transmitting the received data back to the sender

  • The sender then checks the data to see if any errors occurred during transmission

  • This method isn’t reliable as an error could have occurred when the sender transmits the data or when the receiver transmits the data

  • If an error does occur the sender will retransmit the data

Worked Example

Four 7-bit binary values are transmitted from one computer to another.

A parity bit is added to each binary value creating 8-bit binary values. All the binary values are transmitted and received correctly. 

(a) Identify whether each 8-bit binary value has been sent using odd or even parity by writing odd or even in the type of parity column. 

8-bit binary value

Type of parity

01100100

 

10010001

 

00000011 

 

10110010

 

[4]

(b) An error may not be detected when using a parity check.

Identify why an error may not be detected. 

[1]

Answers

(a)

8-bit binary value

Type of parity

01100100

Odd  [1]

10010001

Odd  [1]

00000011 

Even [1] 

10110010

Even [1] 

(b)

Any one from: 

  • there is a transposition of bits [1]

  • it does not check the order of the bits (just the sum of 1s/0s) [1]

  • even number of bits change [1]

  • incorrect bits still add up to correct parity [1]

Last updated:

You've read 0 of your 5 free revision notes this week

Sign up now. It’s free!

Join the 100,000+ Students that ❤️ Save My Exams

the (exam) results speak for themselves:

Did this page help you?

Robert Hampton

Author: Robert Hampton

Expertise: Computer Science Content Creator

Rob has over 16 years' experience teaching Computer Science and ICT at KS3 & GCSE levels. Rob has demonstrated strong leadership as Head of Department since 2012 and previously supported teacher development as a Specialist Leader of Education, empowering departments to excel in Computer Science. Beyond his tech expertise, Robert embraces the virtual world as an avid gamer, conquering digital battlefields when he's not coding.

James Woodhouse

Author: James Woodhouse

Expertise: Computer Science

James graduated from the University of Sunderland with a degree in ICT and Computing education. He has over 14 years of experience both teaching and leading in Computer Science, specialising in teaching GCSE and A-level. James has held various leadership roles, including Head of Computer Science and coordinator positions for Key Stage 3 and Key Stage 4. James has a keen interest in networking security and technologies aimed at preventing security breaches.