Number Systems, Operations and Codes Harmonization - 2
Number Systems, Operations and Codes Harmonization - 2
Number Systems, Operations and Codes Harmonization - 2
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 octal.
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
1 0 1 1 . 1 0 1
1 1 1 1 15
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 between
hexadecimal, decimal and binary.
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
When counting in hex, each digit Decimal Binary Hexadecimal
position can be incremented 0 0000 0
(increase by 1) from 0 to F. 1 0001 1
Once a digit position reaches the
2 0010 2
value F, it is reset to 0 and the next
digit position is incremented. 3 0011 3
This is illustrated in the following 4 0100 4
hex counting sequences. 5 0101 5
6 0110 6
28, 29, 2A, 2B, 2C, 2D, 2E, 2F, 30, 31, 7 0111 7
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.
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
a weight of 20.
10
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
a) 39810 =????
b) 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 Rs 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
C9A16 =???10
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
b) Convert 23410 to hex
234 16 = 14 remainder of 10 A
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
Convert 10011101010101012 to Hex
17
Octal to decimal Conversion
An octal number, can easily be converted to its decimal equivalent by
multiplying each octal digit by it positional weight i.e. a power of 8.
Examples
a) 4158 = 4*82 + 1*81 + 5*80 = 256 + 8 + 5 = 26910
18
Octal to Binary Conversion
The conversion from octal to binary is presented by
converting each octal digit to its 3- bit binary equivalent.
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
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 the computer, must be able to
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.
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 magni-tude 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
1s and 2s Complements of Binary Numbers
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 2s complement form.
Solution
+45 in 8-bit form is 00101101.
First method
Obtain the 1s complement of 00101101 and then add 1.
Positive expression of the given number 00101101
1s complement of it 11010010
Add 1 +1
Thus, the 2s complement form of -45 is 11010011
Second method
Subtract the given number N from 2n
2n = 100000000
Subtract 45 = 00101101
Thus, the 2s 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
35
Thus, the 2s complement form of -45 is 11010011
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 2s
complement arithmetic.
Solution
+14 = 00001110
14 = 11110010 (in 2s complement form)
+46 00101110
14 +11110010 (2s 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 2s
complement arithmetic
Solution
+75 = 01001011
75 = 10110101 (in 2s complement form)
+26 00011010
75 +10110101 (2s 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 2s complement
form.
The magnitude is 2s 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.
Look at the sign bit (MSB); if this is a 0, the result is positive and is in true binary.
If the MSB is a 1 (whether there is a carry or no carry at all), the result is negative
and is in its 1's complement form. Take its 1's complement to get the magnitude in
binary. 39
Example: subtract 14 from 25 using the 8-bit 1s
complement arithmetic
Solution
+25 00011001
14 +11110001 (1s complement form of 14)
+11 100001010
+1 (Add the end around carry)
00001011 =+ 1110
40
Example: Add 25 to 14 using the 8-bit 1s
complement method.
Solution
+14 00001110
25 +11100110 (1s complement form of 25)
11 11110100 (No carry)
There is no carry, the MSB is a 1.
So, the result is negative and is in its 1s
complement form.
The 1s complement of 11110100 is
00001011.
The result is, therefore, 1110. 41
The two numbers in addition are the addend
and the augend. The result is the sum. The 2s
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 will add + 16 and - 24:
16 00010000
+ -24 11101000 (2s complement of -24)
-8 11111000 (2s 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 (2s complement of -5)
+ -9 11110111 (2s complement of -9)
-14 111110010 (2s 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 B2 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
b) 9 5 8 0 (decimal)
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
Decimal Binary Gray If we examine the Gray code groups for
code code each decimal number, it can be seen that
in going from any one decimal number
to the next, only one bit of Gray code
0 0000 0000 changes.
1 0001 0001 For example:
2 0010 0011 Decimal Gray code
3 0011 0010 3 to 4 0010 to 0110
4 0100 0110 14 to 15 1001 to 1000
5 0101 0111 Compare this with the binary code,
6 0110 0101 where anywhere from one to all of the
bits changes in going from one step to
7 0111 0100 the next.
8 1000 1100 For example:
9 1001 1101 Decimal Binary code Gray code
10 1010 1111 7 to 8 0111 to 1000 0100 to 1100
11 1011 1110 The Gray code is often used in
12 1100 1010 situations where other codes, such as
binary, might produce erroneous or
13 1101 1011 ambiguous results during those
14 1110 1001 translations in which more that one bit
15 1111 1000 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 can occur. 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.
For example, the conversion of the binary number 10110 to Gray code
is as follows:
57
The ASCll Code
The most widely used alphanumeric code, the
America standard code for Information Interchange
(ASC II), is used in most micro computers and mini
computers, and in many mainframes.
The ASCII code (pronounced ask-ee) is a 7- bit
code, and so it has 27= 128 possible code groups.
This is more than enough to represent all of the
standard keyboard characters as well as control
functions such as the <RETURN> AND < LINEFEED>
Functions.
58
Character 7-Bit ASCII Octal Hex Character 7-Bit Octal Hex
ASCII
A 100 0001 101 41 Y 101 1001 131 59
B 100 0010 102 42 Z 101 1010 132 5A
C 100 0011 103 43 0 011 0000 060 30
D 100 0100 104 44 1 011 0001 061 31
E 100 0101 105 45 2 011 0010 062 32
F 100 0110 106 46 3 011 0011 063 33
G 100 0111 107 47 4 011 0100 064 34
H 100 1000 110 48 5 011 0101 065 35
I 100 1001 111 49 6 011 0110 066 36
J 100 1010 112 4A 7 011 0111 067 37
K 100 1011 113 4B 8 011 1000 070 38
L 100 1100 114 4C 9 011 1001 071 39
M 100 1101 115 4D blank 010 0000 040 20
N 100 1110 116 4E . 010 1110 056 2E
O 100 1111 117 4F ( 010 1000 050 28
P 101 0000 120 50 + 010 1011 053 2B
Q 101 0001 121 51 $ 010 0100 044 24
R 101 0010 122 52 * 010 1010 052 2A
S 101 0011 123 53 ) 010 1001 051 29
T 101 0100 124 54 - 010 1101 055 2D
U 101 0101 125 55 / 010 1111 057 2F
V 101 0110 126 56 , 010 1100 054 2C
W 101 0111 127 57 = 011 1101 075 3D
X 101 1000 130 58 <RETURN> 000 1101 015 0D
<LINEFEED> 0001010 012 0A
59
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 60
5 0110101