Algorithm2.2.1Binary to Unsigned Decimal
Compute powers of 2, multiply by the respective bit, and add.
\(result = 0\)

For \(i = 0, \cdots, (n1)\)
\(result = result + d_{i} * 2^{i}\)
We have seen in the previous section that binary digits are the natural way to show the states of switches within the computer and that hexadecimal is a convenient way to show the states of up to four switches with only one character. Now we explore some of the mathematical properties of the binary number system and show that it is numerically equivalent to the more familiar decimal (base 10) number system. Showing the mathematical equivalence of the hexadecimal and decimal number systems is left as an exercise for you at the end of this section.
By convention, we use a positional notation when writing numbers. For example, in the decimal number system, the integer 123 is taken to mean \begin{equation} 1 \times 100 + 2 \times 10 + 3 \times 1\label{eq123a}\tag{2.2.1} \end{equation} or \begin{equation} 1 \times 10^2 + 2 \times 10^1 + 3 \times 10^0\label{eq123b}\tag{2.2.2} \end{equation} The rightmost digit (3 in Equations (2.2.1) and (2.2.2)) is the least significant digit because it “counts” the least in the total value of this number. The leftmost digit (1 in this example) is the most significant digit because it “counts” the most in the total value of this number.
The base or radix of the decimal number system is ten. There are ten symbols for representing the digits: 0, 1,…, 9. Moving a digit one place to the left increases its value by a factor of ten, and moving it one place to the right decreases its value by a factor of ten. The positional notation generalizes to any radix, \(r\text{:}\) \begin{equation} d_{n1} \times r^{n1} + d_{n2} \times r^{n2} + \ldots d_{1} \times r^{1} + d_{0} \times r^{0}\label{eqradix}\tag{2.2.3} \end{equation} where there are \(n\) digits in the number and each \(d_{i} = 0, 1, \ldots, r1\text{.}\) The radix in the binary number system is 2, so there are only two symbols for representing the digits: \(d_{i} = \binary{0}, \binary{1}\text{.}\) We can specialize Equation (2.2.3) for the binary number system as \begin{equation} d_{n1} \times 2^{n1} + d_{n2} \times 2^{n2} + \ldots d_{1} \times 2^{1} + d_{0} \times 2^{0} \label{eqradix2}\tag{2.2.4} \end{equation} where there are \(n\) digits in the number and each \(d_{i} = \binary{0}, \binary{1}\text{.}\)
Although we are considering only integers at this point, Equation (2.2.3) does, of course, generalize to fractional values. Simply continue the exponents of the radix, \(r\text{,}\) on to negative values, that is, \(r^{n1}, r^{n2},\ldots, r^{1}, r^{0}, r^{1}, r^{2},\ldots\) . This will be covered in detail in Chapter 16.
It is very simple to convert from binary to decimal:
Compute powers of 2, multiply by the respective bit, and add.
\(result = 0\)
For \(i = 0, \cdots, (n1)\)
\(result = result + d_{i} * 2^{i}\)
Referring to Equation (2.2.3), what are the values of \(r\text{,}\) \(n\) and each \(d_{i}\) for the decimal number \(29458254\text{?}\) The hexadecimal number \(\hex{29458254}\text{?}\)
AnswerConvert the eightdigit binary number \(\binary{1010} \; \binary{0101}\) to decimal.
AnswerConvert the following 8bit binary numbers to decimal by hand:
\(\binary{1010} \; \binary{1010} \)
\(\binary{0101} \; \binary{0101} \)
\(\binary{1111} \; \binary{0000} \)
\(\binary{0000} \; \binary{1111} \)
\(\binary{1000} \; \binary{0000} \)
\(\binary{0110} \; \binary{0011} \)
\(\binary{0111} \; \binary{1011} \)
\(\binary{1111} \; \binary{1111} \)
Convert the following 16bit binary numbers to decimal by hand:
\(\binary{1010} \; \binary{1011} \; \binary{1110} \; \binary{1101}\)
\(\binary{0001} \; \binary{0011} \; \binary{0011} \; \binary{0100}\)
\(\binary{1111} \; \binary{1110} \; \binary{1101} \; \binary{1100}\)
\(\binary{0000} \; \binary{0111} \; \binary{1101} \; \binary{1111}\)
\(\binary{1000} \; \binary{0000} \; \binary{0000} \; \binary{0000}\)
\(\binary{0000} \; \binary{0100} \; \binary{0000} \; \binary{0000}\)
\(\binary{0111} \; \binary{1011} \; \binary{1010} \; \binary{1010}\)
\(\binary{0011} \; \binary{0000} \; \binary{0011} \; \binary{1001}\)
Develop an algorithm to convert hexadecimal to decimal, and then convert the following 16bit numbers to decimal by hand:
\(\hex{a000}\)
\(\hex{ffff}\)
\(\hex{0400}\)
\(\hex{1111}\)
\(\hex{8888}\)
\(\hex{0190}\)
\(\hex{abcd}\)
\(\hex{5555}\)