This post is also available in: हिन्दी (Hindi) العربية (Arabic)

Most of us are aware of “What is Number System”. There are various types of number systems used by humans. These all are broadly divided into two types – Positional and Non-Positional Number System.

## What is Number System?

A number is a way to represent an arithmetic value, count, or measure of a particular quantity. A number system can be considered as a mathematical notation of numbers using a set of digits or symbols. In simpler words, the number system is a method of representing numbers. Every number system is identified with the help of its base or radix.

## What is the Base or Radix of a Number System?

The base or radix of a number system can be referred to as the total number of different symbols which can be used in a particular number system. Radix means “root” in Latin.

Base equals 4 implies there are 4 different symbols in that number system. Similarly, base equals “x” implies there are “x” different symbols in that number system.

## Classification of Number System

The number system can be classified into two types namely:

- Positional Number System
- Non-Positional Number System

### 1. Positional Number System

The positional number system is also known as the Weighted Number System. As the name implies, there will be a weight associated with each digit, also known as the digit’s Place Value.

According to its position of occurrence in the number, each digit is weighted. The weight increases from left to right by a constant factor equivalent to the base or radix. (The weight of the digits on the right is less than the weight of the digits on the left).

A radix point (‘.’) divides a number into two sections. The digits on the left of the radix point have integral weights and the digits on the right of the radix point have fractional weights. The digit at position n has the weight r^{n}.

Let’s consider a number in the decimal number system, say 2589. As the radix or base of the decimal number system is 10, here r = 10.

The position of the digits (from right to left) are 9 at position 0, 8 at position 1, 5 at position 2, and 2 at position 3.

Thus, we write 2589 as 2 × 10^{3} + 5 ×10^{2} + 8 × 10^{1} + 9 × 10^{0}

Let’s consider one more example, say 25.89.

The position of the digits (positions from right to left for digits left of radix point are 0 and 1 and positions from left to right for digits right of radix point are -1 and -2).

Thus, we write 25.89 = 2 × 10^{-1} + 5 × 10^{0} + 8 × 10^{-1} + 9 × 10^{-2} A few examples of positional number systems are Decimal Number System, Binary Number System, Octal Number System, Hexadecimal Number System, etc.

#### Decimal Number System

In a decimal number system, the radix is 10 (r = 10) and the numbers are represented in terms of 10. The number of digits available in the decimal number system is 10 (0, 1, 2, 3, 4, 5, 6, 7, 8, and 9). All the numbers are formed using these 10 digits. The numbers in the above example are decimals.

#### Binary Number System

In a binary number system, the radix is 2 (r = 2) and the numbers are represented in terms of 2. The number of digits available in the binary number system is 2 (0 and 1). All the numbers are formed using these 2 digits.

Example of binary numbers:111011 = 1 × 2^{5} + 1 × 2^{4} + 1 × 2^{3} + 0 × 2^{2} + 1 × 2^{1} + 1 × 2^{0} 11001.101 = 1 × 2^{4} + 1 × 2^{3} + 0 × 2^{2} + 0 × 2^{1} + 1 × 2^{0} + 1 × 2^{-1} + 0 × 2^{-2} + 1 × 2^{-3}

#### Octal Number System

In an octal number system, the radix is 8 (r = 8) and the numbers are represented in terms of 8. The number of digits available in the octal number system is 8 (0, 1, 2, 3, 4, 5, 6, and 7). All the numbers are formed using these 8 digits.

Example of octal numbers:

47216 = 4 × 8^{4} + 7 × 8^{3} + 2 × 8^{2} + 1 × 8^{1} + 6 × 8^{0} 673.024 = 6 × 8^{2} + 7 × 8^{1} + 3 × 8^{0} + 0 × 8^{-1} + 2 × 8^{-2} + 4 × 8^{-2}

#### Hexadecimal Number System

In a hexadecimal number system, the radix is 16 (r = 16) and the numbers are represented in terms of 16. The number of digits available in the hexadecimal number system is 16 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, and F). All the numbers are formed using these 16 digits.

Example of hexadecimal numbers:

90A5C = 9 × 16^{4} + 0 × 16^{3} + A × 16^{2} + 5 × 16^{1} + C × 16^{0} = 9 × 16^{4} + 0 × 16^{3} + 10 × 16^{2} + 5 × 16^{1} + 12 × 16^{0}

Note that in this system A is 10, B is 11, C is 12, D is 13, E is 14 and F is 15.

### 2. Non-Positional Number System

The Non-Positional number system is also known as the Non-Weighted Number System. In the olden days, people used this type of number system for simple calculations like additions and subtractions. In this system, the digit value is independent of its position. A non-positional number system is used for shift position encodes and error-detecting purposes.

The non-positional number system consists of different symbols that are used to represent numbers. A Roman number system is an example of the non-positional number system i.e. I=1, V=5, X=10, L=50.

#### Roman Numerals

Roman numerals are a number system devised by the ancient Romans to count and perform other day-to-day transactions. Several letters from the Latin alphabet are used for the representation of roman numerals. They are typically utilized as general suffixes for people across generations, hour marks on a clock, to denote the names of Popes and Monarchs, etc.

Modern Roman Numerals use seven letters to represent different numbers. These are I, V, X, L, C, D, and M which hold the integer values of 1, 5, 10, 50, 100, 500, and 1000 respectively.

#### Excess-3 Code

The excess-3 code (or XS3) is a non-weighted code used to express decimal numbers. It is a self-complementary binary coded decimal (BCD) code and numerical system which has biased representation. It is particularly significant for arithmetic operations as it overcomes shortcomings encountered while using 8421 BCD code to add two decimal digits whose sum exceeds 9. Excess-3 arithmetic uses a different algorithm than normal non-biased BCD or binary positional number systems.

Excess-3 codes are unweighted and can be obtained by adding 3 to each decimal digit then it can be represented using a 4-bit binary number for each digit. An Excess-3 equivalent of a given binary number is obtained by using the following steps:

- Find the decimal equivalent of a given binary number.
- Add +3 to each digit of the number.
- Convert the newly obtained number back to a binary number to get the required Excess-3 equivalent.

You can add 0011 to each four-bit group in binary coded number (BCD) to get the desired Excess-3 equivalent.

Let’s take the following examples to understand them better.

Converting 23 to Excess code

23 + 33 (Adding 3 to each digit) = 56 = 0101 0110 (which is BCD equivalent).

0101 0110 is the required Excess-3 code for the given decimal number 23.

Converting 15.46 to Excess code

15.46 + 33.33 (Adding 3 to each digit) = 48.79 = 0100 1000.0111 1001 (which is BCD equivalent).

0100 1000.0111 1001 is the required Excess-3 code for the given decimal number 15.46.

#### Cyclic Code

Cyclic code is a subclass of linear block codes where a cyclic shift in the bits of the codeword results in another codeword. It is quite important as it offers easy implementation and thus finds applications in various systems.

Cyclic codes are widely used in satellite communication as the information sent digitally is encoded and decoded using cycling coding. These are error-correcting codes where the actual information is sent over the channel by combining with the parity bits.

#### Gray Code

The Gray Code is a sequence of binary number systems, which is also known as **Reflected Binary Code**. The reason for calling this code as reflected binary code is that the first N/2 values compared with those of the last N/2 values are in reverse order. In this code, two consecutive values are differed by one bit of binary digits.

Gray codes are used in the general sequence of hardware-generated binary numbers. These numbers cause ambiguities or errors when the transition from one number to its successive is done. This code simply solves this problem by changing only one bit when the transition between the numbers is done.