Diego.

Mar 2025 · 6 min read

Understanding Decimals is Not Enough To Become a Developer.

Learning to program goes beyond numbers; it is essential to understand how hardware works and the choices you make as a programmer.

You, reader, probably knows what the decimal system is (from 0 to 9) and how it is present in our day to day, especially in the code we write. That said, everything that composes what we use in programming is increasingly abstract, that is, we do not know for sure what is happening under the scenes.

This skill is essential not only as more knowledge, but rather to become a true developer, who not only develops the applications we use but knows how to take all the performance and processing capacity of the hardware.

Numbering systems are one of the fundamental concepts when it comes to understanding how the applications we develop work at the lowest level of hardware and how the components interpret the instructions that we developers go through so that the computer can process.

What are Binaries ?

Like the base 10 decimal system (using 10 different symbols to represent all numbers), the base binary numbering system 2 (being represented by symbols 0 and 1) is mainly used by the hardware in the reading, writing, and storage of instructions, such as processing chips, also known as CPU (Central Processing Unit), located on the motherboard of a device.

Data processing is facilitated by this system, as only two symbols can be able to translate any instruction ranging from numbers to words or symbols. And how is that possible?

In a very superficial way, the decimal numbers as we know are not understood by the machine and so a conversion is made to the binary numbers.

The conversion works as follows:

We take as an example the number 100 and since we want it in binary number, we have to divide it by 2 to the end. After doing this calculation, we take all the remains of the divisions made and arrange them reading from the bottom up, resulting in the number 1100 as shown in the image below:

Decimal numbering conversion system for binary numbering

Now that we know how the decimal numbers are made for binary numbers, you may be wondering how it is done so that the computer understands what are letters and symbols of ours and other alphabets, since obviously it is not possible to divide them by 2 as we did with the decimals previously. In this case you may have heard of the American Standard Code for Information Interchange, better known as the ASCII table.

Long after the invention of the computer architecture we know today developed by John Von Neumann (1945), the ASCII table was only created in 1961 and published only in 1963 by the American Standards Institute. At first it sets a standard for all the letters and symbols we know so that the hardware can convert this into a binary in which the CPU will process, as shown in the image below:

Examples of letters and symbols represented in ASCII

As time passed and technology evolved, it was unfeasible for programmers to continue using the binary directly in software development and especially for this reason, it began to be usefully used instead of Binary numbers.

What are Hexadecimals?

Hexadecimal is a 16 base numbering system being used initially in the 1950s and taking traction in the early 1960s.

It is represented from 0 to 9 and from the eleventh to the sixteenth symbol being represented from A to F. In this system, unlike the binary, you can reproduce larger values but with few digits. This greatly facilitated a more convenient reading of the extensive binary numbers that was previously difficult to manipulate by those who were the developer.

In addition, decimal numbers can also be converted to binary numbers and for this I will use the decimal number 100 of the previous example in the figure below:

Conversion from decimal to binary using larger numbers

As you may have already noticed, reading larger decimal numbers is much more convenient in hexadecimal compared to binaries. This made a lot of difference and made a lot of easy software development since the 1960s.

Not only limited to a reading facility, Hexadecimal numbers are also easier to convert to binary and vice versa. For this, there is a conversion table from hexadecimals to binaries as in the image below:

Conversion between Hexadecimal and Binary

Languages such as Assembly (one of the first recently level made-in languages), use as syntax, Hexadecimal numbers, and to represent them in the code, 0x is inserted before any hexadecimal, as in the example taken from a snippet of code in Assembly below:

Excerpt from a code in Assembly

You don’t need to know what the instructions mean and what they do in the image, but notice that the hexadecimals are accompanied by 0x, as I mentioned earlier.

Why should I know this?

With the constant increase in the level of abstraction in the area of technology, many professionals in the field do not understand how a computer actually processes the information we manipulate daily. To become a real programmer, it is essential to understand how a computer works internally and how to get the most out of a hardware performance. Only in this way will you be able to make more informed and effective decisions in your work.

What worries me deeply is the “vibe coding” culture that is dominating our generation of programmers. Widespread acceptance of AI-generated code, without questioning or understanding, has become something almost normal. Today, it is common for people to turn to ChatGPT or other generative AIs to solve problems without understanding what is really going on. This creates a reliance on tools that, while useful, can diminish our ability to think critically and solve problems independently.

I see it as a gradual process where our creativity is being compromised. There will come a time when no one will know what it is to live without these technologies. The comfort and ease provided by AIs have undoubtedly revolutionized humanity, but I also feel that the unbridled use of these tools can generate profound impacts in several areas, the consequences of which can be irreversible.

Unlike many superficial and sensational content on social networks and even here on Medium, my goal is to go in the opposite direction. I’m not going to stick to short videos, flashy headlines or simplistic ideas. I want to offer valuable content that not only helps me learn more about the topics I approach, but also convey a deep and detailed knowledge to those who really want to become real programmers.

If you want to delve into the topics I mentioned in this article, I will leave some links below. Thank you for reading!

Read the original on Medium ↗
Next articleQuantum Computing Is Further Away Than It Seems, And Entropy Is One Of The Main Reasons For This