**Home** / **decimal to two complement** / Number Systems - Binary and Hexadecimal Systems

Number Systems – Binary, Decimal, and Hexadecimal

Basic Number Systems and Conversions

See Appendix A for a brief history of number systems.

Binary

• Base or radix 2 number system

• Binary digit is called a bit.

• Numbers are 0 and 1 only.

• Numbers are expressed as powers of 2.

• 20 = 1, 21 = 2, 22 = 4, 23 = 8, 24 = 16, 25 = 32, 26 = 64, 27 = 128, 28 = 256, 29 = 512, 210 = 1024, 211 = 2048, 212 = 4096, 212 = 8192, …

Conversion of binary to decimal ( base 2 to base 10)

Example: convert (110011)2 to decimal

= (1 x 25) + (1 x 24) + (0 x 23) + (0 x 22) + (1 x 21) + (1 x 20)

= 32 + 16 + 0 + 0 + 2 + 1

= (51)10

Conversion of decimal to binary (base 10 to base 2)

Example: convert (51)10 to binary

51 ( 2 = 25 remainder is 1

25 ( 2 = 12 remainder is 1

12 ( 2 = 6 remainder is 0

6 ( 2 = 3 remainder is 0

3 ( 2 = 1 remainder is 1

1 ( 2 = 0 remainder is 1

Answer = 1 1 0 0 1 1

Note: the answer is read from bottom (MSB) to top (LSB) as 1100112

Octal

• Base or radix 8 number system

• 1 octal digit is equivalent to 3 bits.

• Numbers are 0-7.

• Numbers are expressed as powers of 8. 80 = 1, 81 = 8, 82 = 64, 83 = 512, 84 = 4096.

Conversion of octal to decimal ( base 8 to base 10)

Example: convert (632)8 to decimal

= (6 x 82) + (3 x 81) + (2 x 80)

= (6 x 64) + (3 x 8) + (2 x 1)

= 384 + 24 + 2

= (410)10

Conversion of decimal to octal (base 10 to base 8)

Example: convert (177)10 to octal

177 ( 8 = 22 remainder is 1

22 ( 8 = 2 remainder is 6

2 ( 8 = 0 remainder is 2

Note: the answer is read from bottom to top as (261)8, the same as with the binary case.

Hexadecimal

• Base or radix 16 number system

• 1 hex digit is equivalent to 4 bits.

• Numbers are 0-9, A, B, C, D, E, and F.

• (A)16 = (10)10, (B)16 = (11)10, (C)16 = (12)10, (D)16 = (13)10, (E)16 = (14)10, (F)16 = (15)10

• Numbers are expressed as powers of 16.

• 160 = 1, 161 = 16, 162 = 256, 163 = 4096, 164 = 65536, …

Conversion of hexadecimal to decimal ( base 16 to base 10)

Example: convert (F4C)16 to decimal

= (F x 162) + (4 x 161) + (C x 160)

= (15 x 256) + (4 x 16) + (12 x 1)

= 3840 + 64 + 12

= (3916)10

Conversion of decimal to hex (base 10 to base 16)

Example: convert (77)10 to hex

77 ( 16 = 4 remainder is D

4 ( 16 = 0 remainder is 4

Note: the answer is read from bottom to top as (4D)16, the same as with the binary case.

|Decimal |Binary |Octal |Hexadecimal |

|0 |0000 |0 |0 |

|1 |0001 |1 |1 |

|2 |0010 |2 |2 |

|3 |0011 |3 |3 |

|4 |0100 |4 |4 |

|5 |0101 |5 |5 |

|6 |0110 |6 |6 |

|7 |0111 |7 |7 |

|8 |1000 |10 |8 |

|9 |1001 |11 |9 |

|10 |1010 |12 |A |

|11 |1011 |13 |B |

|12 |1100 |14 |C |

|13 |1101 |15 |D |

|14 |1110 |16 |E |

|15 |1111 |17 |F |

Figure 1 - Table of Binary, Decimal and Hexadecimal Numbers

Conversion of Octal and Hex to Binary

Conversion of octal and hex numbers to binary is based upon the the bit patterns shown in the table above and is straight forward. For octal numbers, only three bits are required. Thus 68 = 1102, and 3458 = 111001012. For hex numbers, four bits are required. Thus E16 = 11102, and 47D16 = 100011111012.

Conversion of Binary to Octal and Hex

Conversion of binary numbers to octal and hex simply requires grouping bits in the binary numbers into groups of three bits for conversion to octal and into groups of four bits for conversion to hex. Groups are formed beginning with the LSB and progressing to the MSB. Thus, 111001112 = 3478 and 111000101010100100012 = 70252218. Similarly, 111001112 = E716 and 110001010100001112 = 18A8716.

Binary Arithmetic

Binary Addition

|+ |0 |1 |

|0 |0 |1 |

|1 |1 |10 |

Binary Addition Table

The entry for 1+1 is 10 which indicates a carry of 1

Examples

Addend 1011 1011 1011 1011 1011

Augend + 100 + 100 + 100 + 100 + 100

Sum 1 11 111 1111

carry 1 1 1 1

Addend 1101 1101 1101 1101 1101 1101

Augend + 1001 + 1001 + 1001 + 1001 + 1001 + 1001

Sum 0 10 110 0110 10110

Binary Subtraction

Uses the same principle of "borrowing" that decimal subtraction uses.

|( |0 |1 |

|0 |0 |1 (with a borrow from the next column) |

|1 |1 |0 |

Binary Subtraction Table

Example

borrow 01 01 01 0 0

Minuend 10100 10100 10100 10100 10100 10100

Subtrahend - 1001 - 1001 - 1001 - 1001 - 1001 - 1001

Difference 1 11 011 1011 01011

Note: This problem in decimal is 20 – 9 = 11 which is the answer we get in binary.

Octal Arithmetic

|+ |0 |1 |2 |

|0 |0 |0 |0 |

|0 |1 |1 |0 |

|1 |0 |1 |0 |

|1 |1 |0 |1 |

Table for Single-Bit Binary Addition

This truth table is easily implemented in digital logic, and appears below in a circuit defined as a half-adder.

[pic]

We aren’t interested in today’s computer systems in performing addition on just a single pair of bits (or a pair of 1-bit numbers). Rather, we need to be able to add two n-bit numbers. This is accomplished by putting together a set of adders so that the carry from one adder is provided as an input to the next. This scenario is shown schematically for a four-bit adder in the following diagram.

[pic]

For a multiple-bit adder to work, each of the single bit adders must have three inputs, including the carry from the next-lower-order adder. The two outputs from the single-bit adders would be expressed as:

[pic]

The truth table for this configuration is shown below.

|CIN |A |B |Sum |COUT |

|0 |0 |0 |0 |0 |

|0 |0 |1 |1 |0 |

|0 |1 |0 |1 |0 |

|0 |1 |1 |0 |1 |

|1 |0 |0 |1 |0 |

|1 |0 |1 |0 |1 |

|1 |1 |0 |0 |1 |

|1 |1 |1 |1 |1 |

TruthTable for Modified 1-bit Adder

Appendix A – A Brief History of Number Systems

The concept of the number and the process of counting developed so long before the time of recorded history that the manner of this development is largely conjecture. Math historians have surmised that development occurred as the result of a primitive tribe desiring to know how many members it had and how many enemies it opposed. Ancient shepherds wanted to know if their flock was decreasing in size. Probably among the earliest method for keeping a count was by some simple tally method, employing the principle of one-to-one correspondence. Through the use of sticks, stones, notches in wood, knots in rope, or fingers, the tribe could keep track of its members or possessions.

As time passed and it became necessary to make more extensive counts, the counting process needed to be systematized. By arranging the numbers into convenient basic groups, our early ancestors introduced the concept of number bases. There is anthropological evidence that three and four served as primitive number bases. Today, some South American tribes count by hands, or base five. There is also evidence that base 12 was used as a pre-historic number system used mainly in relation to measurements. The American Indian and Mayan tribes used a base 20 number system. The ancient Babylonians used a number system based on 60. This number system is still used today when measuring times and angles in minutes and seconds.

The number system that you are probably most familiar with, the decimal system (base 10) appeared first in India about 500 A.D. This system undoubtedly resulted from finger counting.

The world’s first electronic computer, the ENIAC (Electronic Numerical Integrator And Computer) used the decimal number system internally. The binary number system was not the number system of computers until 1945 when John von Neumann presented the world with his stored program concept for the digital computer, which incorporated the base 2 number system. The binary number system is suitable to digital computers for the following reasons:

1. Simplification of the arithmetic circuitry.

2. Provides a simple “code” in which to store information and instructions.

3. Provides reliability.

The number systems of octal and hexadecimal are used primarily as a shorthand notation when dealing with the memory dumps (typically available in binary, octal, or hex), assembly level instruction codes and machine code that system level programmers.

APPENDIX B – Geometric Depiction of Two’s Complement Integers

[pic]

The geometric depiction of two’s complement numbers may help you to understand how overflow conditions can be determined using this representation for negative numbers. First consider the case of 4-bit integers as shown in part (a). The circle in the upper part of the diagram is formed by selecting the appropriate segment from the number line and joining the endpoints. Using 4-bit integers, two’s complement form allows us to represent the numbers between –810…+710 (inclusive). Starting at any point on the circle, you can add positive k (or subtract negative k) to that number (the starting point number) by moving k positions clockwise. Similarly, you can subtract positive k (or add negative k) from that number by moving k positions counter-clockwise. If an arithmetic operation results in traversal of the point where the endpoints are joined, an incorrect answer will result. The diagram in part (b) represents the general case for n-bit integers.

Appendix C – Nine’s Complement

Since you are most familiar with the decimal number system, the question might arise if you can perform subtraction via addition using the complementation technique. The answer is yes, but with the decimal number system you use a nine’s complement. The nine’s complement of a number is found by subtracting the number from a number that consists of all 9’s. The technique is illustrated below.

Forming the 9’s complement

Given 36510 , it’s nine’s complement is: 999 – 365 = 63410

Given 3410 , it’s nine’s complement is: 99 – 34 = 6510

Subtraction as an Addition Operation

842 using 9’s complement: 842

-365 +634

477 1476 end-around-carry

+ 1

477 answer in base 10

When the larger number is subtracted from the smaller number, no end-around carry will result, but the answer will be in nine’s complement form and of the opposite sign.

152 using 9’s complement: 152

-290 +709

-138 861

no carry is produced so the answer is in

9’s complement form and of the opposite

sign. So the answer is:

999

-861

-138

What is 2's complement and how it is important? 2's complement is used for representing signed numbers and performing arithmetic operations such as subtraction, addition , etc. The positive number is simply represented as a magnitude form. So there is nothing to do for representing positive numbers.