# 21 binary number systems and codes

Subtracting leaves us with Subtracting 1 from P gives us 4. Next, subtract 16 from 23, to get 7. Subtract 1 from P gives us 3. Subtract 1 from P to get 1. Subtract 1 from P to get 0.

Subtract 1 from P to get P is now less than zero, so we stop. Another algorithm for converting decimal to binary However, this is not the only approach possible. We can start at the right, rather than the left. This gives us the rightmost digit as a starting point. Now we need to do the remaining digits.

One idea is to "shift" them. It is also easy to see that multiplying and dividing by 2 shifts everything by one column: Similarly, multiplying by 2 shifts in the other direction: Take the number Dividing by 2 gives Since we divided the number by two, we "took out" one power of two.

Also note that a1 is essentially "remultiplied" by two just by putting it in front of a[0], so it is automatically fit into the correct column. Now we can subtract 1 from 81 to see what remainder we still must place Dividing 80 by 2 gives We can divide by two again to get This is even, so we put a 0 in the 8's column. Since we already knew how to convert from binary to decimal, we can easily verify our result. These techniques work well for non-negative integers, but how do we indicate negative numbers in the binary system?

Before we investigate negative numbers, we note that the computer uses a fixed number of "bits" or binary digits. An 8-bit number is 8 digits long. For this section, we will work with 8 bits. The simplest way to indicate negation is signed magnitude. To indicate , we would simply put a "1" rather than a "0" as the first bit: In one's complement, positive numbers are represented as usual in regular binary. However, negative numbers are represented differently. To negate a number, replace all zeros with ones, and ones with zeros - flip the bits.

Thus, 12 would be , and would be As in signed magnitude, the leftmost bit indicates the sign 1 is negative, 0 is positive. To compute the value of a negative number, flip the bits and translate as before. Begin with the number in one's complement. Add 1 if the number is negative. Twelve would be represented as , and as To verify this, let's subtract 1 from , to get If we flip the bits, we get , or 12 in decimal.

In this notation, "m" indicates the total number of bits. Let's take a look at how it works. To convert the decimal number 75 to binary, we would find the largest power of 2 less than 75, which is Subtract 8 from 11 to get 3. Thus, our number is Making this algorithm a bit more formal gives us: Find the largest power of two in D.

Let this equal P. Put a 1 in binary column P. Subtract P from D. Put zeros in all columns which don't have ones. This algorithm is a bit awkward. Particularly step 3, "filling in the zeros. Now that we have an algorithm, we can use it to convert numbers from decimal to binary relatively painlessly.

Our first step is to find P. Subtracting leaves us with Subtracting 1 from P gives us 4. Next, subtract 16 from 23, to get 7. Subtract 1 from P gives us 3. Subtract 1 from P to get 1. Subtract 1 from P to get 0. Subtract 1 from P to get P is now less than zero, so we stop.

Another algorithm for converting decimal to binary However, this is not the only approach possible. We can start at the right, rather than the left. This gives us the rightmost digit as a starting point. Now we need to do the remaining digits.

One idea is to "shift" them. It is also easy to see that multiplying and dividing by 2 shifts everything by one column: Similarly, multiplying by 2 shifts in the other direction: Take the number Dividing by 2 gives Since we divided the number by two, we "took out" one power of two. Also note that a1 is essentially "remultiplied" by two just by putting it in front of a[0], so it is automatically fit into the correct column. Now we can subtract 1 from 81 to see what remainder we still must place Dividing 80 by 2 gives We can divide by two again to get This is even, so we put a 0 in the 8's column.

Since we already knew how to convert from binary to decimal, we can easily verify our result. These techniques work well for non-negative integers, but how do we indicate negative numbers in the binary system? Before we investigate negative numbers, we note that the computer uses a fixed number of "bits" or binary digits.

An 8-bit number is 8 digits long. For this section, we will work with 8 bits.