2-1 Digital Numbering and Coding
2-1 Digital Numbering and Coding
2-1 Digital Numbering and Coding
Introduction
A number system is nothing more than a code that uses
symbols to refer to a number of items.
The binary number system and digital codes are
fundamental to computers and to digital electronics in
general.
In this chapter, the binary number system and its
relationship to other number systems, such as decimal ,
hexadecimal, and octal is the principal focus.
You will learn to make conversion between binary and
octal and decimal and hexadecima.
Also, digital codes such as binary coded decimal (BCD),
the Gray code, the Excess-3, and the ASCII are covered.
The arithmetic operations with binary numbers are also
included.
1
Decimal Systems
The decimal number system uses the symbols 0,1,2,3,4,5,6,7,8
and 9.
The decimal number system contains 10 symbols and is
sometimes called the base 10 system.
The decimal system is a positional value system in which the
value of a digit depends on its position.
In general ‘’ Any number is simply the sum of the products of
each digit value and its positional value ’’
Positional values
(weight)
103 102 101 100 10-1 10-2 10-3
2 7 4 5 . 2 1 4
3
Binary System
A binary system is a code that uses only two basis symbols, 0 &1 and is sometimes
called the base 2 system.
This base 2 system can be used to represent any quantity that can be represented in
decimal or other number systems.
All the statements made earlier concerning the decimal system are equally applicable
to the binary system.
The binary system is also a positional value system, where in each binary digit has its
own value or weight expressed as a power of 2.
Positional values
(weight)
23 22 21 20 2-1 2-2 2-3
1 0 1 1 . 1 0 1
5
Hexadecimal Number Systems
The hexadecimal system uses base 16.
Thus, it has 16 possible digit symbols.
It uses the digits
0 through 9 plus
the letters A, B, C, D, E and F as the 16 digit
symbols.
In table below the relationships among
hexadecimal, decimal and binary is shown.
Note that each hexadecimal digit represents
a group of four binary digits.
It is important to remember that hex
(abbreviation for hexadecimal) digits A
through F are equivalent to the decimal
values 10 though 15.
6
Counting in Hexadecimal Decimal Binary Hexadecimal
7
Octal Number System
The octal number system is very important in digital
Computer work.
The octal number system has a base of eight, meaning
that it has eight possible digits: 0,1,2,3,4,5,6 and 7.
Thus, each digit of an octal number can have any value
from 0 to 7.
The advantage of the octal system is its usefulness in
converting directly from a 3 bit binary number.
The digit positions in an octal number have weights as
follows.
84 83 82 81 80 8-1 8-2 8-3 8-4 8-5
Octal points
32 + 16 + 0 + 0 + 2 + 1 = 5110
b) 1 0 1 1 0 0 1 02
27 26 25 24 23 22 21 20
128 + 0 + 32 + 16 + 0 + 0 + 2 + 0 = 17810
Note that the procedure is to find the weights (i.e. powers of
2) for each bit position that contains a 1, and then to add
them up.
10
Also note that the MSB has a weight of 27 even though it is
the eighth bit this is because the LSB is the first bit and has
Decimal – to – Binary conversions
There are two ways to convert a decimal whole number to its
equivalent binary system representation.
The 1st method (Sum-of-Weights)
Exercises
c) 39810 =????
d) 415310= ????
11
The 2nd method (‘’Repeated Division’’)
This method uses repeated division by 2.
Requires repeatedly dividing the decimal number by 2 and
writing down the remainder after division until the quotient of
0 is obtained.
Note that the binary result is obtained by writing the first
remainder as the LSB and the last remainder as the MSB.
Examples
a) 3710=?2
37 2 = 18 with remainder of 1 1s LSB
18 2 = 9 with remainder of 0 2s
9 2 = 4 with remainder of 1 4s
4 2 = 2 with remainder of 0 8s
2 2 = 1 with remainder of 0 16s
1 2 = 0 with remainder of 1 32s MSB
\ 3710= 1001012
b) 39810= ?2 12
Flow chart for Repeated Division
Start
Divide by 2
Is
Q=0?
No
Yes
Collect R’s with first R as LSB
and last R as MSB
END 13
Hex –to- decimal Conversion
A hex number can be converted to its decimal equivalent by
using the fact tat each hex digit position has a weight that is
a power of 16.
The LSD has a weight of 160 = 1,the next higher digit position
has a weight of 161 = 16, the next has a weight of 162 = 256,
and so on.
Examples
a) 35616
= 3*162 + 5*161 + 6*160 = 768 + 80 + 6 = 85410
b) A3F16
= 10*162 + 3*161 + 15*160 = 2560 + 48 + 15 = 262310
Exercises
1BD516=???10
14
Decimal-to-Hex conversion
Recall that we did decimal –to- binary conversion using repeated
division by 2. Like wise decimal-to-hex conversion can be done
using repeated division by 16.
Examples
a) Convert 4710 to hex
47 16 = 2 remainder of 15 F
2 16 = 0 remainder of 2
\ 4710 = 2F16
14 16 = 0 remainder of 14 E
\ 23410 = EA16
Exercise
a) Convert 10010 to hex
b) Convert 44510 to hex 15
Hex-to-Binary conversion
The Hexadecimal number system is used primarily as a
‘’Shorthand’’ method for representing binary numbers.
It is a relatively simple method to convert a hex number to
binary.
Each hex digit is converted to its 4 bit binary equivalent. (see
table ‘’Hexadecimal Number system’’).
Examples
a) C316 = C 3
B 4 E 16
b) Convert 101001010112 to Hex
0101 0010 10112 = 0101 0010 1011
5 2 B 16
This is why hex (and octal) are so useful in representing large binary
numbers.
Exercise
17
Convert 10011101010101012 to Hex
Octal to decimal Conversion
An octal number, can easily be converted to its decimal equivalent by
multiplying each octal digit by its positional weight i.e. a power of 8.
Examples
a) 4158 = 4*82 + 1*81 + 5*80 = 256 + 8 + 5 = 26910
Examples
a) 478 = 4 7
19
Binary to Octal Conversion
Converting from binary to octal integers is simply the reverse
of the foregoing process.
The bits of the binary number are grouped into groups of
three bits starting at the LSB.
The each group is converted to its octal equivalent.
Examples
a) Convert 1011110012 to Octal
101 111 0012 = 101 111 001
5 7 18
b) Convert 100111102 to Octal
010 011 1102 = 010 011 110
2 3 68
Exercise:
Convert B 2 F16 to Octal 20
Fractions
As far as fractions are concerned, you multiply by 2 and record a
carry in the integer position.
The carries taken in forward order are the binary fraction.
Examples
a) Convert 0.62510 to a binary fraction
0.625 * 2 = 1.25 0.25 with carry of 1
0.25 * 2 = 0.5 with carry of 0
0.5 * 2 = 1.0 with carry of 1
\ 0.62510 = 0.1012
21
Exercises
67.8210= ---------2
=---------8
=---------16
22
Summary of Conversions
The following summery should help you in doing the
different conversion.
When converting from binary [or octal, or hex] to
decimal, use the method of taking the weight sum of
each digit position.
When converting from decimal to binary [or octal or
hex] use the method of repeatedly dividing by 2 [or 8
or 16] and collecting remainders [refer fig. flow chart]
When converting from binary to octal [or hex], group
the bits in groups of the three [or four], and convert
each group into the correct octal [or hex] digit.
When converting from octal [or hex] into binary,
convert each digit in to its 3-bit [or 4-bit] equivalent.
When converting from octal to hex [or vice versa, first
convert to binary, then convert the binary into the
desired number system.
23
SIGNED NUMBERS
Digital systems, such as computers, must handle both
positive and negative numbers.
A signed binary number consists of both sign and
magnitude information.
The sign indicates whether a number is positive or
negative and
the magnitude is the value of the number.
Different formats used for binary representation of both
positive and negative decimal numbers
There are three forms in which signed integer (whole)
numbers can be represented in binary:
Sign-magnitude,
1's complement, and
2's complement.
Of these, the 2's complement is the most important and
the sign-magnitude is rarely used. 24
The Sign Bit
The left-most bit in a signed binary number is the sign bit, which
tells you whether the number is positive or negative.
a 0 is for positive, and
a 1 is for negative
Sign-Magnitude Form
When a signed binary number is represented in sign-magnitude, the left-most
bit is the sign bit and the remaining bits are the magnitude bits.
The magnitude bits are in true (uncomplemented) binary for both positive and
negative numbers.
For example, the decimal number +25 is expressed as an 8-bit signed binary
number using the sign-magnitude form as
00011001
Sign bit Magnitude bits
The decimal number 25 is expressed as 10011001
Notice that the only difference between +25 and -25 is the sign bit because the
magnitude bits are in true binary for both positive and negative numbers
In the sign-magnitude form, a negative number has the same magnitude bits as
the corresponding positive number but the sign bit is a 1 rather than a zero. 25
1’s and 2’s Complements of Binary Numbers
The 1's complement and the 2's complement of a
binary number are important because they permit
the representation of negative numbers.
The method of 2's complement , arithmetic is
commonly used in computers to handle negative
numbers.
Finding the 1's Complement of a Binary Number
The 1's complement of a binary number is found
by changing all 1s to 0s and all 0s to 1s, illustrated
below:
1 0 1 1 0 0 1 0 Binary number
0 1 0 0 1 1 0 1 1’s complement 26
Finding the 2's Complement of a Binary Number
The 2's complement of a binary number is found
by adding 1 to the LSB of the 1's complement.
2's complement = (1’s complement) + 1
Example
Find the 2's complement of 10110010.
Solution
10110010 Binary number
01001101 1's complement
+ 1 Add 1
01001110 2's complement
27
REPRESENTATION OF SIGNED NUMBERS AND
BINARY ARITHMETIC IN COMPUTERS
So far, we have considered only positive numbers.
The representation of negative is also equally
important. Most digital computers do subtraction by
the 2's complement method, but some do it by the 1's
complement method.
The advantage of performing subtraction by the
complement method is reduction in the hardware.
Instead of having separate digital circuits for addition
and subtraction, only adding circuits are needed.
That is, subtraction is also performed by adders only.
Instead of subtracting one number from the other, the
complement of the subtrahend is added to the
minuend.
In sign-magnitude form, an additional bit called the
sign bit is placed in front of the number.
If the sign bit is a 0, the number is positive. If it is a 1,
the number is negative. 28
• Example of Signed-magnitude form
0 1 0 1 0 0 1 +41
Sign bit Magnitude bit
1 1 0 1 0 0 1 -41
Sign bit Magnitude bit
33
Methods of obtaining the 2's complement of a
number:
The 2's complement of a number can be
obtained in three ways as given below.
By obtaining the 1's complement of the
given number (by changing all 0s to 1s and
1s to 0s) and then adding 1.
By subtracting the given n-bit number N
from 2n.
Starting at the LSB, copying down each bit
up to and including the first 1 bit
encountered, and complementing the
remaining bits.
34
Example: Express -45 in 8-bit 2’s complement form.
Solution
+45 in 8-bit form is 00101101.
First method
Obtain the 1’s complement of 00101101 and then add 1.
Positive expression of the given number 00101101
1’s complement of it 11010010
Add 1 +1
Thus, the 2’s complement form of -45 is 11010011
Second method
Subtract the given number N from 2n
2n = 100000000
Subtract 45 = 00101101
Thus, the 2’s complement form of -45 is 11010011
Third method
Copy down the bits starting from LSB up to and including the first 1, and
then complement the remaining bits.
Original number 00101101
Copy up to first 1 bit 1
Complement the remaining bits 1101001
Thus, the 2’s complement form of -45 is 11010011 35
Two's Complement Arithmetic
The 2's complement system is used to represent negative
numbers using modulus arithmetic.
The word length of a computer is fixed. That means if a 4-
bit number is added to another 4-bit number, the result will
be only of 4 bits. Carry, if any, from the fourth bit will
overflow. This is called the modulus arithmetic.
For example: 1100 + 1111 = 1011.
In the 2's complement subtraction, add the 2's complement
of the subtrahend to the minuend.
If there is a carry out, ignore it. Look at the sign bit, i.e. MSB
of the sum term.
If the MSB is a 0, the result is positive and is in true binary
form.
If the MSB is a 1 (whether there is a carry or no carry at all)
the result is negative and is in its 2's complement form.
Take its 2's complement to find its magnitude in binary.
36
Example: subtract 14 from 46 using the 8-bit 2’s
complement arithmetic.
Solution
+14 = 00001110
14 = 11110010 (in 2’s complement form)
+46 00101110
14 +11110010 (2’s complement form of14)
+32 100100000 (Ignore the carry)
There is a carry, ignore it.
The MSB is 0; so, the result is positive and is in
normal binary form.
Therefore, the result is +00100000=+32
37
Example: add 75 to +26 using the 8-bit 2’s
complement arithmetic
Solution
+75 = 01001011
75 = 10110101 (in 2’s complement form)
+26 00011010
75 +10110101 (2’s complement form of -75)
49 11001111 (No carry)
There is no carry, the MSB is a 1.
So, the result is negative and is in 2’s complement
form.
The magnitude is 2’s complement of 11001111, that
is, 00110001=49.
Therefore, the result is 49.
38
One's Complement Arithmetic
The 1's complement of a number is obtained by simply
complementing each bit of the number, that is, by changing all the
0s to 1 s and all the 1 s to 0s.
We can also say that the 1's complement of a number is obtained
by subtracting each bit of the number from l.
This complemented value represents the negative of the original
number.
This system is very easy to implement in hardware by simply
feeding all bits through inverters.
One of the difficulties of using 1's complement is its
representation of zero.
Both 00000000 and its 1's complement 11111111 represent zero.
The 00000000 is called positive zero and the 11111111 is called
negative zero.
In 1's complement subtraction, add the 1's complement of the
subtrahend to the minuend.
If there is a carry out, bring the carry around and add it to the LSB.
This is called the end around carry. 39
Look at the sign bit (MSB); if this is a 0, the result is positive and
Example: subtract 14 from 25 using the 8-bit 1’s
complement arithmetic
Solution
+25 00011001
14 +11110001 (1’s complement form of 14)
+11 100001010
+1 (Add the end around carry)
00001011 =+ 1110
40
Example: Add 25 to 14 using the 8-bit 1’s
complement method.
Solution
+14 00001110
25 +11100110 (1’s complement form of 25)
11 11110100 (No carry)
There is no carry, the MSB is 1. So, the
result is negative and is in its 1’s
complement form.
The 1’s complement of 11110100 is
00001011.
The result is, therefore, 1110.
41
The two numbers in addition are the addend (a
number which is added to another) and the augend (the number
to which another is added). The result is the sum & The
2’s compliment will be used to represent
negative numbers.
There are four cases that must be considered
when adding two numbers:
1. Both numbers positive
2. Positive number and smaller negative number
3. Positive number and larger negative number
4. Both numbers negative
We will take one case at a time. Eight bits are
used to represent each number
42
1. Both numbers positive:
In this case, both sign bits are zero and a 2's compliment
is not required. To illustrate, we will add +7 and +4:
7 00000111
4 00000100
11 00001011
2. Positive number and smaller negative number:
In this case, the true binary form of the positive number is
added to the 2's complement of the negative number.
The sign bits are included in the addition, and the result
will be positive. To illustrate we will add + 15 and -6:
15 00001111
+ -6 11111010
9 100001001
Discard carry
Notice that the sign of the sum is positive (0) as it should be.
43
3. Positive number and larger negative number:
Again, the true binary form of positive number is added
to the 2's complement of the negative number.
The sign bits are included in the addition, and the result
will be negative. To illustrate we will add + 16 and - 24:
16 00010000
+ -24 11101000 (2’s complement of -24)
-8 11111000 (2’s complement of -8)
Notice that the result automatically comes out in 2's
complement because it is a negative number.
4. Both numbers negative:
In this case, the 2's complements of both numbers added
and, of course, the sum is a negative number in 2's
complement form illustrate, we will add - 5 and -9:
-5 11111011 (2’s complement of -5)
+ -9 11110111 (2’s complement of -9)
-14 111110010 (2’s complement of -14)
Discard carry
44
Overflow
When the number of bits in the sum exceeds the number
of bits in each of numbers added, overflow results, as
illustrated by the following example.
B3 B 3 B2 B 2 B1 B1 B0 B 0
ADD / SUB
7 5 3 1
8 6 4 2
12 11 10 9
74LS83
4-bit Parallel Adder
A3 A2 A1 A0
A Register
CLK CLK CLK CLK
D D D D
S3 S2 S1 S0
Transfer
Pulse
47
CODES
Introduction
When numbers, letters, or words are represented by
Special group of symbols, we say that they are being
encoded, and the group of symbols is called a code.
The group of 0s and 1s in the binary number can be
thought of as a code representing the decimal number.
When a decimal number is represented by its equivalent
binary number, we call it straight binary coding.
We have seen that the conversing between decimal and
binary can be come long and complicated for large
numbers.
For this reason, a means of encoding decimal numbers
that combines some features of both the decimal and
binary system is used in certain situations. 48
Binary-Coded- Decimal Code
If each digit of a decimal number is represented by its 4- bit binary
equivalent the result is a code called binary-coded-decimal
(hereafter abbreviated BCD).
Since a decimal digit can be as large as 9, four bits are required
to code each digit (the binary code for 9 is 1001).
Examples
a) The decimal number 437 is changed to its BCD equivalent as
follows:
4 3 7 (decimal)
b) 9 5 8 0 (decimal)
49
Clearly, only the 4- bit binary numbers from 0000 through
1001 are used.
The BCD Code does not use the numbers 1010, 1011, 1100,
1101, 1110 and 1111.
In other words only 10 of the 16 possible 4 bit binary code
groups are used.
If any of the ‘’forbidden’’ 4 bit numbers ever occurs in machine
using the BCD code, it is usually an indication that an error
has occurred.
Convert the BCD number 011111001000 to its decimal equivalent
0111 1100 1000 (BCD)
7 8
Forbidden code group
indicates error in BCD number 50
Comparison of BCD and Binary
It is important to realize that BCD is not another number system like
binary, octal, decimal, and hexadecimal.
It is, in fact, the decimal system with each digit encoded in its binary
equivalent.
It is also important to understand that a BCD number is not the
same as a straight binary number.
A straight binary code takes the complete decimal number and
represents it in binary;
But the BCD code converts each decimal digit to binary individually.
To illustrate, take the number 253 and compare its straight binary
and BCD codes:
25310 = 111111012 (Straight binary)
25310 = 0010 0101 0011 (BCD)
The BCD code requires 12 bits while the straight binary code
requires only 8 bits to represent 253.
This is because BCD does not use all possible 4-bit groups, as
pointed out earlier, and is therefore somewhat inefficient.
The main advantage of the BCD code is the relative ease of
converting to and from decimal only the 4 bit code groups for the
decimal digits 0 through 9 need to be remembered. 51
Gray Code
The Gray code belongs to a class of codes called
minimum change codes, in which only one bit in the
code group changes when going from one step to the
next.
The gray code is an unweighted code, meaning that the
bit positions in the code groups do not have any specific
weight assigned to them.
Because of this, the gray code is not suitable for
arithmetic operations but finds application in input/out
put devices and some types of analog-to-digital
converters.
Table below shows the gray code representation for the
decimal number 0 through 15,together with straight
binary code.
52
If we examine the Gray code groups
for each decimal number, it can be
Decimal Binary Gray
seen that in going from any one
code code
decimal number to the next, only one
bit of Gray code changes.
For example:
0 0000 0000
Decimal Gray code
1 0001 0001
3 to 4 0010 to 0110
2 0010 0011
14 to 15 1001 to 1000
3 0011 0010
4 0100 0110 Compare this with the binary code,
5 0101 0111 where anywhere from one to all of
6 0110 0101 the bits changes in going from one
7 0111 0100
step to the next.
For example:
8 1000 1100
Decimal Binary code Gray code
9 1001 1101
7 to 8 0111 to 1000 0100 to
10 1010 1111 1100
11 1011 1110 The Gray code is often used in
12 1100 1010 situations where other codes, such
13 1101 1011 as binary, might produce erroneous
14 1110 1001 or ambiguous results during those
15 1111 1000 translations in which more than one
bit of the code is changing.
Obviously, using the Gray code
would eliminate this problem, since
only one bit changes occurs per
transition and no “race” between bits
53
Binary-to-Gray code Conversion
Conversion between binary code and Gray code is sometimes
useful. The following rules explain how to convert from a binary
number to a Gray code word:
The most significant bit (left-most) in the Gray code is the same
as the corresponding MSB in the binary number.
Going from left to right, add each adjacent pair of binary code bits
to get the next Gray code bit. Discard carries. OR see the
following steps:
A given binary number can be converted into its Gray code
equivalent by going through the following steps:
1. Begin with the most significant bit (MSB) of the binary number. The
MSB of the Gray code equivalent is the same as the MSB of the given
binary number.
2. The second most significant bit is obtained by adding the MSB and the
second MSB of the binary number and ignoring the carry, if any. That
is, if the MSB and the bit adjacent to it are both ‘1’, then 54 the
corresponding Gray code bit would be a ‘0’.
3. The third most significant bit, adjacent to the second MSB, in the
Gray code number is obtained by adding the second MSB and the
third MSB in the binary number and ignoring the carry, if any.
4. The process continues until we obtain the LSB of the Gray code
number by the addition of the LSB and the next higher adjacent bit
of the binary number.
• For example, the conversion of the binary number 10110
to Gray code is 1 1 101.
55
Gray -to- Binary Conversion
The following rules explain how to convert from gray
code to a binary number :
The most significant bit (left-most) in the binary code is
the same as the corresponding bit in the Gray code.
Add each binary code bit generated to the Gray code bit
in the next adjacent position. Discard carries. OR see the
following steps:
A given Gray code number can be converted into its
binary equivalent by going through the following steps:
1. Begin with the most significant bit (MSB). The MSB of
the binary number is the same as the MSB of the Gray
code number.
2. The bit next to the MSB (the second MSB) in the binary
number is obtained by adding the MSB in the binary
number to the second MSB in the Gray code number 56
and disregarding the carry, if any.
3. The third MSB in the binary number is obtained by
adding the second MSB in the binary number to the
third MSB in the Gray code number. Again, carry, if any,
is to be ignored.
4. The process continues until we obtain the LSB of the
binary number.
For example, the conversion of the Gray code word
11011 to binary is as follows:
Gray Code Binary
11011------------------1---MSB
MSB of binary 1+1(next to MSB of Gray C)=0 C-1 ignore it
Next result of binary 0+0=0
Again next result of binary 0+1=1
And finally 1+1=0, there fore, Gray equivalent of 11011 is 10010
57
The Excess –3 code
The excess-3 code is another important BCD code. To encode a decimal
number to the excess –3 form, we add 3 to each digit of the decimal
number and convert to binary form.
For example
61
Example 1:
The following is a message encoded in ASCII code. What is the message?
1000001 1010011 1010100 1010101
Solution: convert each 7- bit code to its hex equivalent. The results are
1000001 1010011 101 0100 101 0101
41 53 54 55
A S T U
The ASCII code is used for the transfer of alphanumeric information between a
computer and input / output devices such as video terminals or printers.
Example 2
Determine the codes that will be entered in to memory when the operator types
in the following BASIC statement:
GOTO 25
Solution:
Locate each character (including the space) in table and record its ASCII code
G 1000111
O 1001111
T 1010100
O 1001111
( Space) 0100000
2 0110010
5 0110101
62