Mastering Number Systems: Binary, Decimal, Hexadecimal, and More

mahdi - Jul 6 - - Dev Community

In the realm of computer science and mathematics, number systems play a pivotal role in how we represent, process, and understand data. While most people are familiar with the decimal system (base-10), which is used in everyday life, other systems like binary (base-2) and hexadecimal (base-16) are essential in computing. This article delves into these systems and explores their significance, conversions, and practical applications.

Number Systems and Their Conversions

Understanding various number systems and how to convert between them is essential in computing and digital electronics. Let's explore the decimal, binary, hexadecimal, and octal systems, along with step-by-step examples for conversions.

Decimal (Base-10) System

The decimal system is the most widely used number system. It uses ten symbols: 0, 1, 2, 3, 4, 5, 6, 7, 8, and 9. Each position in a decimal number represents a power of 10.

Example:

Consider the number 456 in decimal.

Calculate its value as:

4 * 10^2 + 5 * 10^1 + 6 * 10^0

= 4 * 100 + 5 * 10 + 6 * 1

= 400 + 50 + 6 = 456

Binary (Base-2) System

The binary system is fundamental to computer operations. It uses only two symbols: 0 and 1. Each position in a binary number represents a power of 2.

Example:

Consider the binary number 1101.

Calculate its value as:

1 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0

= 1 * 8 + 1 * 4 + 0 * 2 + 1 * 1

= 8 + 4 + 0 + 1 = 13

Binary is used in digital circuits and computing because it aligns perfectly with the on-off states of transistors.

Binary Coded Decimal (BCD)

To convert decimal digits to binary for easier manipulation in digital systems, Binary Coded Decimal (BCD) is often used. Learn more about Binary Coded Decimal (BCD)

Hexadecimal (Base-16) System

The hexadecimal system is critical in computing for simplifying binary code. It uses sixteen symbols: 0-9 and A-F, where A represents 10, B represents 11, and so on up to F, which represents 15. Each position in a hexadecimal number represents a power of 16.

Example:

Consider the hexadecimal number 2F3.

Calculate its value as:

2 * 16^2 + 15 * 16^1 + 3 * 16^0

= 2 * 256 + 15 * 16 + 3 * 1

= 512 + 240 + 3 = 755

Hexadecimal is preferred in computing because it can represent large binary numbers more compactly. Each hexadecimal digit corresponds to four binary digits (bits).

Octal (Base-8) System

The octal system uses eight symbols: 0-7. Each position in an octal number represents a power of 8.

Example:

Consider the octal number 745.

Calculate its value as:

7 * 8^2 + 4 * 8^1 + 5 * 8^0

= 7 * 64 + 4 * 8 + 5 * 1

= 448 + 32 + 5 = 485

Octal was more commonly used in earlier computing systems but has largely been supplanted by hexadecimal due to its more straightforward alignment with binary numbers.

Fixed-Point Representation

Fixed-point representation is used to represent real numbers in binary where a fixed number of digits represent the integer part and a fixed number of digits represent the fractional part. Learn more about Fixed-Point Representation

Floating-Point Representation

Floating-point representation is used for a wider range of real numbers. It consists of a significand (or mantissa) and an exponent, allowing for representation of very large or very small numbers. Learn more about Floating-Point Representation

Gray Code (Binary Reflected Gray Code)

Gray Code is a binary numeral system where two successive values differ in only one bit. This property is useful in minimizing errors in digital communication and is used in various encoding schemes. Learn more about Gray Code

Why Use Different Bases?

  1. Binary (Base-2): Essential for digital circuits and logical operations, where data is processed in bits (0s and 1s).

  2. Decimal (Base-10): Naturally intuitive for human use due to its alignment with our ten fingers, making it ideal for everyday arithmetic.

  3. Hexadecimal (Base-16): Efficient for representing large binary numbers in a compact form, making it easier to debug and understand machine-level code.

  4. Octal (Base-8): Historically used in computing due to its simpler conversion from binary, though less common today.

Signed Magnitude Representation

In signed magnitude representation, the most significant bit (MSB) represents the sign (0 for positive and 1 for negative), and the remaining bits represent the magnitude of the number. Learn more about Signed Magnitude Representation

Two's Complement Representation

Two's complement representation is widely used for signed integers in computing. It simplifies the design of arithmetic circuits and allows for straightforward binary addition and subtraction. Learn more about Two's Complement Representation

Conversions Between Bases

Binary to Decimal

To convert a binary number to a decimal:

  1. Write down the binary number.
  2. Multiply each bit by 2 raised to the power of its position index, starting from 0 on the right.
  3. Sum all the products.

Example:

Convert binary 1011 to decimal.

1011_2 = 1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 1 * 2^0

= 1 * 8 + 0 * 4 + 1 * 2 + 1 * 1

= 8 + 0 + 2 + 1 = 11

Decimal to Binary

To convert a decimal number to binary:

  1. Divide the number by 2.
  2. Record the remainder.
  3. Update the number to the quotient from the division.
  4. Repeat steps 1-3 until the quotient is 0.
  5. The binary representation is the sequence of remainders read from bottom to top.

Example:

Convert decimal 13 to binary.

I couldn't find the division sign so I used %

13 % 2 = 6 remainder 1

6 % 2 = 3 remainder 0

3 % 2 = 1 remainder 1

1 % 2 = 0 remainder 1

Reading the remainders from bottom to top, 13 in decimal is 1101 in binary.

Hexadecimal to Decimal

To convert a hexadecimal number to a decimal:

  1. Write down the hexadecimal number.
  2. Multiply each digit by 16 raised to the power of its position index, starting from 0 on the right.
  3. Sum all the products.

Example:

Convert hexadecimal 1A3 to decimal.

1A3_{16} = 1 * 16^2 + A * 16^1 + 3 * 16^0

(A in hexadecimal is 10 in decimal)

= 1 * 256 + 10 * 16 + 3 * 1

= 256 + 160 + 3 = 419

Decimal to Hexadecimal

To convert a decimal number to hexadecimal:

  1. Divide the number by 16.
  2. Record the remainder (convert to hexadecimal if greater than 9).
  3. Update the number to the quotient from the division.
  4. Repeat steps 1-3 until the quotient is 0.
  5. The hexadecimal representation is the sequence of remainders read from bottom to top.

Example:

Convert decimal 419 to hexadecimal.

I couldn't find the division sign so I used %

419 % 16 = 26 remainder 3

26 % 16 = 1 remainder 10 \text{ (A in hexadecimal)}

1 % 16 = 0 remainder 1

Reading the remainders from bottom to top, 419 in decimal is 1A3 in hexadecimal.

Binary to Hexadecimal

To convert a binary number to hexadecimal:

  1. Group the binary digits into sets of four, starting from the right. Add leading zeros if necessary.
  2. Convert each group of four bits to its hexadecimal equivalent.

Example:

Convert binary 11010110 to hexadecimal.

Group the binary digits into sets of four:
1101 0110

Convert each group:
1101_2 = D_{16} (13 \text{ in decimal})

0110_2 = 6_{16}

So, 11010110 in binary is D6 in hexadecimal.

Hexadecimal to Binary

To convert a hexadecimal number to binary:

  1. Convert each hexadecimal digit to its four-bit binary equivalent.

Example:

Convert hexadecimal D6 to binary.

Convert each digit:
D_{16} = 1101_2 (13 \text{ in decimal})

6_{16} = 0110_2

So, D6 in hexadecimal is 11010110 in binary.

Octal to Decimal

To convert an octal number to a decimal:

  1. Write down the octal number.
  2. Multiply each digit by 8 raised to the power of its position index, starting from 0 on the right.
  3. Sum all the products.

Example:

Convert octal 745 to decimal.

745_{8} = 7 * 8^2 + 4 * 8^1 + 5 * 8^0

= 7 * 64 + 4 * 8 + 5 * 1

= 448 + 32 + 5 = 485

Decimal to Octal

To convert a decimal number to octal:

  1. Divide the number by 8.
  2. Record the remainder.
  3. Update the number to the quotient from the division.
  4. Repeat steps 1-3 until the quotient is 0.
  5. The octal representation is the sequence of remainders read from bottom to top.

Example:

Convert decimal 485 to octal.

I couldn't find the division sign so I used %

485 % 8 = 60 remainder 5

60 % 8 = 7 remainder 4

7 % 8 = 0 remainder 7

Reading the remainders from bottom to top, 485 in decimal is 745 in octal.

Binary to Octal

To convert a binary number to octal:

  1. Group the binary digits into sets of three, starting from the right. Add leading zeros if necessary.
  2. Convert each group of three bits to its octal equivalent.

**Example:

**

Convert binary 11010110 to octal.

Group the binary digits into sets of three:

11 010 110

Add leading zeros if necessary:

011 010 110

Convert each group:

011_2 = 3_{8}

010_2 = 2_{8}

110_2 = 6_{8}

So, 11010110 in binary is 326 in octal.

Octal to Binary

To convert an octal number to binary:

  1. Convert each octal digit to its three-bit binary equivalent.

Example:

Convert octal 326 to binary.

Convert each digit:

3_{8} = 011_2

2_{8} = 010_2

6_{8} = 110_2

So, 326 in octal is 011010110 in binary. (Removing leading zeroes if not necessary)

These detailed explanations and examples cover the fundamental number systems and their conversions, essential for various applications in computing and digital electronics.

Practical Applications

  1. Memory Addresses: Hexadecimal is used to represent memory addresses in a readable format.
  2. Color Codes: Hexadecimal values are used in web design to represent RGB color values.
  3. Assembly Language: Low-level programming often uses hexadecimal to simplify binary code representation.
  4. Networking: IP addresses and MAC addresses can be represented in hexadecimal for brevity.

Converting Text and Numbers to Various Bases

Converting text, words, letters, or other non-numeric data into various number systems is a common practice in computing for tasks such as encryption, data encoding, and more. Here’s how to convert text and other non-numeric data into binary, hexadecimal, and other bases step-by-step.

Converting Text to Binary

To convert text to binary:

  1. Take each character in the text.
  2. Find the ASCII value of each character.
  3. Convert the ASCII value to binary.

Example:

Convert the word "Hi" to binary.

  1. Find the ASCII values:
    • H: 72
    • i: 105
  2. Convert each ASCII value to binary:
    • 72 in binary: 01001000
    • 105 in binary: 01101001
  3. Concatenate the binary values:
    • "Hi" in binary: 01001000 01101001

Converting Text to Hexadecimal

To convert text to hexadecimal:

  1. Take each character in the text.
  2. Find the ASCII value of each character.
  3. Convert the ASCII value to hexadecimal.

Example:

Convert the word "Hi" to hexadecimal.

  1. Find the ASCII values:
    • H: 72
    • i: 105
  2. Convert each ASCII value to hexadecimal:
    • 72 in hexadecimal: 48
    • 105 in hexadecimal: 69
  3. Concatenate the hexadecimal values:
    • "Hi" in hexadecimal: 48 69

Converting Numbers to Text (Base64 Encoding)

Base64 is a popular encoding scheme used to represent binary data in an ASCII string format. It's commonly used in email and web data.

To convert text to Base64:

  1. Convert each character to its ASCII value.
  2. Convert the ASCII values to binary.
  3. Group the binary digits into sets of 6 bits.
  4. Convert each 6-bit group to its corresponding Base64 character.

Example:

Convert the word "Hi" to Base64.

  1. Find the ASCII values:
    • H: 72
    • i: 105
  2. Convert each ASCII value to binary:
    • 72 in binary: 01001000
    • 105 in binary: 01101001
  3. Concatenate the binary values and group into 6 bits:
    • 01001000 01101001 becomes 010010 000110 1001
  4. Convert each 6-bit group to Base64:
    • 010010 -> S
    • 000110 -> G
    • 1001 -> k
  5. Pad with = to make it a multiple of 4 characters:
    • "Hi" in Base64: SGk=

Converting Hexadecimal to Text

To convert hexadecimal back to text:

  1. Take each hexadecimal pair.
  2. Convert the pair to its decimal (ASCII) value.
  3. Convert the ASCII value to its corresponding character.

Example:

Convert hexadecimal 4869 to text.

  1. Split into pairs:
    • 48 and 69
  2. Convert each pair to decimal:
    • 48 in decimal: 72
    • 69 in decimal: 105
  3. Convert ASCII values to characters:
    • 72: H
    • 105: i
  4. Concatenate the characters:
    • 4869 in hexadecimal is "Hi"

Converting Text to Octal

To convert text to octal:

  1. Take each character in the text.
  2. Find the ASCII value of each character.
  3. Convert the ASCII value to octal.

Example:

Convert the word "Hi" to octal.

  1. Find the ASCII values:
    • H: 72
    • i: 105
  2. Convert each ASCII value to octal:
    • 72 in octal: 110
    • 105 in octal: 151
  3. Concatenate the octal values:
    • "Hi" in octal: 110 151

Converting Octal to Text

To convert octal back to text:

  1. Take each octal group.
  2. Convert the group to its decimal (ASCII) value.
  3. Convert the ASCII value to its corresponding character.

Example:

Convert octal 110 151 to text.

  1. Split into groups:
    • 110 and 151
  2. Convert each group to decimal:
    • 110 in decimal: 72
    • 151 in decimal: 105
  3. Convert ASCII values to characters:
    • 72: H
    • 105: i
  4. Concatenate the characters:
    • 110 151 in octal is "Hi"

Additional Examples

Converting Number 255 to Binary, Hexadecimal, and Octal

Decimal to Binary:

Convert 255 to binary:

  1. Divide by 2, record the remainder, and continue with the quotient.

I couldn't find the division sign so I used %

255 % 2 = 127 remainder 1

127 % 2 = 63 remainder 1

63 % 2 = 31 remainder 1

31 % 2 = 15 remainder 1

15 % 2 = 7 remainder 1

7 % 2 = 3 remainder 1

3 % 2 = 1 remainder 1

1 % 2 = 0 remainder 1
Read remainders bottom to top: 255 in binary is 11111111.

Decimal to Hexadecimal:

Convert 255 to hexadecimal:

  1. Divide by 16, record the remainder, and continue with the quotient.

I couldn't find the division sign so I used %

255 % 16 = 15 remainder 15 (F)
15 % 16 = 0 remainder 15 (F)
Read remainders bottom to top: 255 in hexadecimal is FF.

Decimal to Octal:

Convert 255 to octal:

  1. Divide by 8, record the remainder, and continue with the quotient.

I couldn't find the division sign so I used %

255 % 8 = 31 remainder 7

31 % 8 = 3 remainder 7

3 % 8 = 0 remainder 3

Read remainders bottom to top: 255 in octal is 377.

IEEE 754 Standard for Floating-Point Arithmetic

The IEEE 754 standard defines representation and operations for floating-point arithmetic in computers, ensuring consistency and accuracy across different computing systems. Learn more about IEEE 754 Standard

Error and Precision Issues in Floating-Point Arithmetic

Floating-point arithmetic can introduce errors due to the finite precision available for representing real numbers. These errors can accumulate in calculations, leading to significant inaccuracies. Learn more about Error and Precision Issues in Floating-Point Arithmetic

Conclusion

Understanding different number systems is fundamental in computer science and mathematics. Binary, decimal, and hexadecimal systems each have unique advantages and applications, making them indispensable tools for engineers, programmers, and mathematicians. Mastering these systems enhances one's ability to work efficiently with digital systems and data representation.

Explore the World of Algorithms and Data Structures

Are you eager to embark on a journey through the fascinating realm of algorithms and data structures? Dive into my GitHub repository, Algorithms & Data Structures, where a treasure trove of knowledge awaits.

Experiment, Practice, and Master:

  • Discover: Immerse yourself in a diverse collection of algorithms and data structures. Each exploration presents an opportunity to practice, solidify your knowledge, and refine your skills.
  • Continuous Growth: The repository is dynamic and expanding. While some sections are actively under development as part of my ongoing learning journey (anticipated completion: 2-3 years), new content is continuously added.

Join Our Learning Community:

The pursuit of knowledge thrives on interaction and collaboration. Whether you're seeking guidance, have suggestions for improvement, or simply want to discuss algorithms and performance optimization, your participation is valued!

  • Engage with Us:
    • Twitter: Follow me @m_mdy_m for updates and insights.
    • Telegram: Join the discussion on my channel: https://t.me/medishn (Preferred for real-time conversations)
    • GitHub: Explore and contribute on m-mdy-m.

Together, let's cultivate a vibrant learning community where knowledge flows freely and we collectively advance our understanding of algorithms and data structures.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Terabox Video Player