Number representation: BCD, floating point numbers  muneebmbytes/digitalDesignCourse GitHub Wiki
Binary Coded Decimal
What is BCD?
The BCD system offers relative ease of conversion between machinereadable and humanreadable numerals.
Why BCD?
With BCD, coders represent every decimal digit with four to eight digits, often called bits, using only zero and one. For example, you could represent a decimal value of five in BCD as 0101. The goal of BCD is to make it simpler to convert human numbers into values that a machine can understand.
Advantage
An advantage of the Binary Coded Decimal system is each decimal digit is denoted by a group of 4 binary digits and that it allows easy conversion between decimal a base10 system and binary a base2 system.
A disadvantage is BCD code does not used all the states between binary 1010 for the decimal 10 and binary 1111 for the decimal 15.
Binary coded decimal disadvantage
BCD Representation
BCD Classification
BCD is classified into two categories weighted and non weighted codes.
Weighted Binary Code
Weighted binary codes are those binary codes which obey the positional weight principle.
Each position of the number represents a specific weight. Several systems of the codes are used to express the decimal digits 0 through 9. In these codes each decimal digit is represented by a group of four bits.
Weighted codes are used in:
a) Data manipulation during arithmetic operation.
Data is manipulated by using the arithmetic instructions in digital computers. Data is manipulated to produce results necessary to give solution for the computation problems. The Addition, subtraction, multiplication and division are the four basic arithmetic operations.
b) For input/output operations in digital circuits
A digital I/O board is an interface board that adds the ability to input and output digital signals in parallel to a computer. Using a digital I/O device makes it possible to monitor (read) the statuses of measuring devices as well as the relays and operation switches of various types of control circuits. In addition to controlling output for lamps, LEDs, 7segment displays, and relays, such products can also be used as an interface for digital communication with controllers such as a PLC (sequencer).
c) To represent the decimal digits in calculators, volt meters etc.
Weighted code Examples
8421 code
2421 code
5211 code
NonWeighted Codes
In this type of binary codes, the positional weights are not assigned. The examples of nonweighted codes are Excess3 code and Gray code.
Nonweighted Code Application
In Shift position encoding
Shift position encoding is a technique used in some nonweighted code applications, such as in text processing or natural language processing (NLP).
In the context of realtime applications, shift position encoding can be used in various scenarios, such as audio or video processing, where different data streams may have different delays or latencies. By aligning these data streams through shift position encoding, it is possible to improve the overall performance and accuracy of the application.
BCD Application
BCD Usage in AlphaNumeric Display and RTC
BCD was commonly used for displaying alphanumeric in the past but in modernday BCD is still used with realtime clocks or RTC chips to keep track of wallclock time and it’s becoming more common for embedded microprocessors to include an RTC.
RTC (RealTime Clock) is a hardware component that keeps track of the current date and time. BCD (BinaryCoded Decimal) is a way of representing decimal numbers in a binary format. Combining these two, an RTC application using BCD involves programming the RTC to keep track of the current date and time in BCD format.
Alphanumeric Display
It’s very common for RTCs to store the time in BCD format.
A binary clock might use LEDs to express binary values. With this clock each column of LEDs displays a binarycoded decimal numeral.
Real Time Clock (RTC) Chips
BCD Format
BCD to Excess3 conversion
The process of converting BCD to Excess3 is quite simple from other conversions. The Excess3 code can be calculated by adding 3, i.e., 0011 to each fourdigit BCD code
Now, we will use the Kmap method
w=A+BC+BD
x=B' C+B' D+BC' D'
y=CD+C'D'
z=D
Example: (100001011001)BCD
To find the Excess3 code of the given Excess3 code, first, we will make the group of 4 bits from right to left. Then, we will add 0011 in each group of 4 bits in order to get the excess3 code.
Excess3 to BCD conversion
The process of converting Excess3 to BCD is opposite to the process of converting BCD to Excess3. The BCD code can be calculated by subtracting 3, i.e., 0011 from each fourdigit Excess3 code.
on simplifying w=AB+ACD
B=x'y'+x'z'+xyz
C=y'z+yz'
D=z'
Example: (101110001100)Excess3
To find the BCD code of the given BCD number, first, we make the group of 4 bits from right to left. Then, we subtract 0011 in each group of 4 bits in order to get the BCD code.
The procedure behind above solution
*For 1011
*We have to subtract 1011 by 0011 (i.e by 3)
 Follow the 2's complement method
*For 2's complement first we have to take the 1's complement of 0011
 i.e, 1100
*Then add 1
1100+ 1 =1101
*Finally add 1011+ 1101
We get output =1000
*For 1000
*We have to subtract 1000 by 0011 (i.e by 3)
Follow the 2's complement method
*For 2's complement first we have to take the 1's complement of 0011
i.e, 1100
*Then add 1
1100+ 1 =1101
*Finally add 1000 + 1101
We get output =0101
For 1100
*We have to subtract 1100 by 0011 (i.e by 3)
Follow the 2's complement method
*For 2's complement first we have to take the 1's complement of 0011
i.e, 1100
*Then add 1
1100+ 1 =1101
*Finally add 1100 + 1101
We get output =1001
2421 Code
This code also a 4 bit application code where the binary weights carry 2, 4, 2, 1 from left to right.
DECIMAL NUMBER  BINARY NUMBER  2421 CODE 

0  0  0000 
1  1  0001 
2  10  0010 
3  11  0011 
4  100  0100 
5  101  1011 
6  110  1100 
7  111  1101 
8  1000  1110 
9  1001  1111 
why 2421 code?
The weights of this code are 2, 4, 2 and 1.
This code has all positive weights. So, it is a positively weighted code.
It is an unnatural BCD code. Sum of weights of unnatural BCD codes is equal to 9.
It is a selfcomplementing code.
Selfcomplementing codes provide the 9’s complement of a decimal number, just by interchanging 1’s and 0’s in its equivalent 2421 representation.
Example
Let us find the 2421 equivalent of the decimal number 786. This number has 3 decimal digits 7, 8 and 6. From the table, we can write the 2421 codes of 7, 8 and 6 are 1101, 1110 and 1100 respectively.
Therefore, the 2421 equivalent of the decimal number 786 is 110111101100.
5211 Code
This code is also a 4 bit application code where the binary weights carry 5, 2, 1, 1 from left to right.
DECIMAL NUMBER  BINARY NUMBER  5211 CODE 

0  0  0000 
1  1  0001 
2  10  0011 
3  11  0101 
4  100  0111 
5  101  1000 
6  110  1010 
7  111  1100 
8  1000  1110 
9  1001  1111 
why 5211 Code?
Because, 5211 is reflective
A code is said to be reflective when code for 9 is complement for the code for 0, and so is for 8 and 1 codes, 7 and 2, 6 and 3, 5 and 4. In the above table

"9" is the 1's complement of "0".

"8" is the complement of "1".

"7" is the complement of "2" etc..
Sequential Codes
Sequential codes are the codes in which 2 subsequent numbers in binary representation differ by only one digit.
DECIMAL NUMBER  BINARY NUMBER  8421 CODE  EXCESS3 

0  0  0000  0011 
1  1  0001  0100 
2  10  0010  0101 
3  11  0011  0110 
4  100  0100  0111 
5  101  0101  1000 
6  110  0110  1001 
7  111  0111  1010 
8  1000  1000  1011 
9  1001  1001  1100 