Binary-to-decimal conversion
Binary to decimal conversion is explained in this tip on how a network device uses its IP address, subnet mask and default gateway information.
To be a network engineer, you need to understand binary so that you can understand how a network device uses its IP address, subnet mask, and default gateway information. You also need to be able to convert from binary to decimal and from decimal to binary.
What is binary?
Binary is a numbering system that uses only the digits 1 and 0. We are accustomed to using the decimal number system, which uses the digits 0 through 9.
Binary is the numbering system that network devices use to process all data. Without binary, computers and networks would not function. All data sent across a network is in binary.
Just like we use the decimal numbering system (numbers 0 through 9) for all counting, money, and financial transactions, computers use binary for storage of all data, all data transmissions, and all numerical calculations. You can think of this as a language. For example, all people in Russia use Russian for all communication. If someone in Russia talked to someone in the United States, they would probably talk in English so that we could understand and communicate. That person would be bilingual because they understand two languages. In that sense, you could compare the computer to them because the computer understands two numbering systems, binary and decimal. Humans don't want to have to think or do calculations in binary. We want to convert those binary numbers to decimal. Converting from binary to decimal is not difficult. The numbers 0 and 1 in binary are converted to 0 and 1 in decimal. After that, it gets a little more complicated.
Here is an example of counting from zero to ten using binary:
Decimal | Binary |
0 | 0 |
1 | 1 |
2 | 10 |
3 | 11 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
8 | 1000 |
9 | 1001 |
10 | 1010 |
All binary to decimal or decimal to binary conversions use this chart:
2^{7} | 2^{6} | 2^{5} | 2^{4} | 2^{3} | 2^{2} | 2^{1} | 2^{0} |
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
Let's discuss how to use this chart. First, always start by looking at the chart from right to left, not from left to right. Second, all the numbers on the chart stay where they are -- you don't change these. These numbers are used to tell you the values of the binary digits you will enter in the blanks.
Finally, the top line of 2^{x} numbers tells you what each column represents. The column on the far right is worth 2^{0}. The second line, with the decimal numbers, tells you what the answer is to the 2^{0} line. So, if you look at the column on the far right, second line, it tells you that 2^{0} is equal to 1 IF there is a 1 in the blank below it. If you had a one in the fourth column from the right, 2^{3}, you would have a value of 8 turned ON. Anywhere that you do not have a 1 in the bottom line, you will fill in with a zero. Think of each of these columns being able to be turned ON and OFF by using a 1 or a 0, respectively.
When you are done filling in your 1's and 0's on the bottom line of the chart, you can add all the values that you turned ON, in decimal, from left to right (using the second line of the chart). Thus, if you had put a 1 in the 2^{3} column (8) and a 1 in the 2^{0} column (1), you would add 8 + 1 = 9. That 9 is represented by 1001.
These numbers are calculated using this table:
2^{7} | 2^{6} | 2^{5} | 2^{4} | 2^{3} | 2^{2} | 2^{1} | 2^{0} | |
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | = 9 |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | = 1001 |
Let's look at another example... If you look at the number 3, it was calculated by having a 1 in the 2^{0} place and a 2 in the 2^{1} place (starting on the right-hand side of the table). If you add the 1 that you get from the 2^{0} place and the 2 that you get from the 2^{1} place, you get 3. In other words, 1 + 2 = 3.
Let's look at another one. The 1000 in binary represents 8 in decimal because you have a 1 in the 2^{3} place and that gives you 8. You have 0's in all the other places.
IP addressing and binary
The three critical pieces of information that you, the network administrator, provide or a DHCP server provides to network devices (computer, server, router, switch, etc.) are:
- IP Address
- Subnet mask
- Default Gateway
The network device immediately converts this information into binary. So, let's pretend that we are that network device and we are given the following information:
- IP Address = 1.1.1.1
- Subnet Mask = 255.255.255.0
- Default Gateway = 1.1.1.254
The computer converts this information into binary and calculates the Network ID. Before we can calculate the Network ID, we first have to convert from decimal to binary.
Converting decimal to binary
Let's start with converting the IP address to binary. To convert 1.1.1.1 to binary, you take the octets (the numbers between the decimals) one at a time, like this:
1 decimal = 1 binary
1 decimal = 1 binary
1 decimal = 1 binary
1 decimal = 1 binary
An IP address is 32 bits in binary, so each octet is 8 bits in binary. Because of this, we need to pad the other bits as 0's. That means that 1.1.1.1 in decimal equals the following number in binary:
00000001 00000001 00000001 00000001
That was easy! To convert the subnet mask of 255.255.255.0, take each octet one at a time, using the table:
2^{7} | 2^{6} | 2^{5} | 2^{4} | 2^{3} | 2^{2} | 2^{1} | 2^{0} |
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
Here is what I get:
255 = 11111111
To do this, I looked at the bottom row of numbers that each binary space represents. I started with 2^{7}, which equals 128. So, how many 128's are in 255? The answer is 1. So I write:
255 – 128 = 127
Now, how many 64's (the next binary space) are in 127? The answer is 1, so I write: 127 – 64 = 63
And so on, like this:
63 – 32 = 31
31 – 16 = 15
15 – 8 = 7
7 – 4 = 3
3 – 2 = 1
1 – 1 = 0
So, I used all 8 binary spaces to calculate the 255 in decimal, to be 11111111 in binary. The last octet is a 0, so 0 in binary is 0 but we write 00000000. As you get more experience you will already know that eight 1's in binary equals 255 in decimal.
The total subnet mask in binary is:
11111111 11111111 11111111 00000000
So, here is our IP address and subnet mask in binary:
00000001 00000001 00000001 00000001
11111111 11111111 11111111 00000000
Calculating the network ID
The network device on which you configured this IP addressing information must know what its network ID is. The network ID tells the device what its local network is. If the destination IP address for the network device with which this network device is trying to communicate is not on its local network, that traffic is sent to the default gateway. Thus, the default gateway is used only if the destination for the traffic your device is sending is not on your local network.
To calculate the network ID, start off with the IP address and subnet mask in binary, from above:
IP Address | 00000001 | 00000001 | 00000001 | 00000001 |
Subnet Mask | 11111111 | 11111111 | 11111111 | 00000000 |
Perform a logical AND on these. A logical AND is a math function where you look at each row and calculate an answer based on the following rules:
- 0 and 0 = 0
- 0 and 1 = 0
- 1 and 1 = 1
In our case, this is the answer you get:
IP Address | 00000001 | 00000001 | 00000001 | 00000001 |
Subnet Mask | 11111111 | 11111111 | 11111111 | 00000000 |
AND | ||||
Network ID | 00000001 | 00000001 | 00000001 | 00000000 |
Using the AND rules, I look at the first 0 in the IP address and the first 1 in the subnet mask. I see that, according to the rules, a 0 and a 1 = 0. That is how I calculated the first 0 in the network ID. To continue, I go from left to right, calculating each row.
Notice that the only difference between the IP address and network ID is in the last number of the last octet. Now, to get the Network ID in decimal, we convert this back. This is a simple example, so converting it back is easy. The 00000001 in binary is converted to 1 in decimal. In the last octet, the 00000000 is converted to 0. This makes our network ID:
1.1.1.0
So, when the network device wants to communicate with a host that has the IP address of 1.1.1.200, it compares this with its network ID and finds that this host is on the local network. The network device can then communicate directly with it because it is on the 1.1.1.0 network. If the network device wants to communicate with host 1.1.2.1, however, it finds that this is NOT on its local network (the 1.1.1.0 network) and it sends this traffic to the default gateway.
These examples are, of course, very simplified, since this topic can get very complex when you begin subnetting networks and using variable-length subnet masks.
Article summary
Here is what we have learned:
- Binary is a numbering system using only 1 and 0.
- Use the binary conversion chart to convert from binary to decimal and back.
- Your network device/computer calculates the Network ID using the IP address and subnet mask it is provided.
- To calculate the Network ID, the computer performs a math calculation called a "logical AND."
- A default gateway is not required for a device that will not communicate outside its local network.
About the author:
David Davis (CCIE #9369, CWNA, MCSE, CISSP, Linux+, CEH) has been in the IT industry for 15 years. Currently, he manages a group of systems/network administrators for a privately owned retail company and authors IT-related material in his spare time. He has written over fifty articles, eight practice tests and three video courses and has co-authored one book. His website is at www.happyrouter.com.