MASIGNASUKAv102
6510051498749449419

Number Converting

Number Converting
Add Comments
2/15/2016
Number Converting

Source: http://www.robotroom.com/

Number Systems


 

 

There are infinite ways to represent a number. The four commonly associated with modern computers and digital electronics are: decimal, binary, octal, and hexadecimal.

Decimal (base 10) is the way most human beings represent numbers. Decimal is sometimes abbreviated as dec.

Decimal counting goes:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, and so on.

Binary (base 2) is the natural way most digital circuits represent and manipulate numbers. (Common misspellings are “bianary”, “bienary”, or “binery”.) Binary numbers are sometimes represented by preceding the value with '0b', as in 0b1011. Binary is sometimes abbreviated as bin.

Binary counting goes:
0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111, 10000, 10001, and so on.

Octal (base 8) was previously a popular choice for representing digital circuit numbers in a form that is more compact than binary. Octal is sometimes abbreviated as oct.

Octal counting goes:
0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, and so on.

Hexadecimal (base 16) is currently the most popular choice for representing digital circuit numbers in a form that is more compact than binary. (Common misspellings are “hexdecimal”, “hexidecimal”, “hexedecimal”, or “hexodecimal”.) Hexadecimal numbers are sometimes represented by preceding the value with '0x', as in 0x1B84. Hexadecimal is sometimes abbreviated as hex.

Hexadecimal counting goes:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, and so on.

[ad id="13280"]

All four number systems are equally capable of representing any number. Furthermore, a number can be perfectly converted between the various number systems without any loss of numeric value.

At first blush, it seems like using any number system other than human-centric decimal is complicated and unnecessary. However, since the job of electrical and software engineers is to work with digital circuits, engineers require number systems that can best transfer information between the human world and the digital circuit world.

It turns out that the way in which a number is represented can make it easier for the engineer to perceive the meaning of the number as it applies to a digital circuit. In other words, the appropriate number system can actually make things less complicated.

 

Fundamental Information Element of Digital Circuits


Almost all modern digital circuits are based on two-state switches. The switches are either on or off. It doesn’t matter if the switches are actually physical switches, vacuum tubes, relays, or transistors. And, it doesn’t matter if the 'on' state is represented by 1.8 V on a cutting-edge CPU core, -12 V on a RS-232 interface chip, or 5 V on a classic TTL logic chip.

Because the fundamental information element of digital circuits has two states, it is most naturally represented by a number system where each individual digit has two states: binary.

For example, switches that are 'on' are represented by '1' and switches that are 'off' are represented by '0'. It is easy to instantly comprehend the values of 8 switches represented in binary as 10001101. It is also easy to build a circuit to display each switch state in binary, by having an LED (lit or unlit) for each binary digit.

 

Making Values More Compact


“Binary digit” is a little unwieldy to say over and over, so the term was contracted to “bit”. Not only is the term “binary digit” a little unwieldy, but so is the length of a binary number, since each digit can only represent one switch. As digital circuits grew more complex, a more compact form of representing circuit information became necessary.

An octal number (base 8) can be up to 1/3 the length of a binary number (base 2). 8 is a whole power of 2 (23=8). That means three binary digits convert neatly into one octal digit.

A hexadecimal number (base 16) can be up to 1/4 the length of a binary number. 16 is a whole power of 2 (24=16). That means four binary digits convert neatly into one hexadecimal digit.

Unfortunately, decimal (base 10) is not a whole power of 2. So, it is not possible to simply chunk groups of binary digits to convert the raw state of a digital circuit into the human-centric format.

Let’s see how to convert a number from binary.

 

[incor name="2. Binary Number Conversion"]

2. Binary Number Conversion


 

Binary to Octal


An easy way to convert from binary to octal is to group binary digits into sets of three, starting with the least significant (rightmost) digits.













Binary: 11100101 =11 100 101
011 100 101Pad the most significant digits with zeros if necessary to complete a group of three.

Then, look up each group in a table:

























Binary:000001010011100101110111
Octal:01234567

 

















Binary =011100101
Octal  =345= 345 oct

 

Binary to Hexadecimal


An equally easy way to convert from binary to hexadecimal is to group binary digits into sets of four, starting with the least significant (rightmost) digits.

Binary: 11100101 = 1110 0101

Then, look up each group in a table:

























Binary:00000001001000110100010101100111
Hexadecimal:01234567


























Binary:10001001101010111100110111101111
Hexadecimal:89ABCDEF

 















Binary =11100101
Hexadecimal =E5= E5 hex

 

[ad id="13280"]

Binary to Decimal


They say there are only 10 people in this world: those that understand binary and those that don’t. Ha ha.

If you don’t get that joke, you'll need a method to convert from binary to decimal. One method involves addition and multiplication.

  1. Start the decimal result at 0.

  2. Remove the most significant binary digit (leftmost) and add it to the result.

  3. If all binary digits have been removed, you’re done. Stop.

  4. Otherwise, multiply the result by 2.

  5. Go to step 2.


[ad id="13280"]

Here is an example of converting 11100000000 binary to decimal:























































































Binary Digits  Operation  Decimal Result  Operation  Decimal Result
11100000000+11× 22
1100000000+13× 26
100000000+17× 214
00000000+014× 228
0000000+028× 256
000000+056× 2112
00000+0112× 2224
0000+0224× 2448
000+0448× 2896
00+0896× 21792
0+01792done.

Let’s try converting from decimal

 

3. Decimal Number Conversion


 

A repeated division and remainder algorithm can convert decimal to binary, octal, or hexadecimal.

  1. Divide the decimal number by the desired target radix (2, 8, or 16).

  2. Append the remainder as the next most significant digit.

  3. Repeat until the decimal number has reached zero.


Decimal to Binary


Here is an example of using repeated division to convert 1792 decimal to binary:































































































Decimal Number  Operation  Quotient  Remainder  Binary Result
1792÷ 2 =89600
896÷ 2 =448000
448÷ 2 =2240000
224÷ 2 =11200000
112÷ 2 =56000000
56÷ 2 =280000000
28÷ 2 =1400000000
14÷ 2 =7000000000
7÷ 2 =31100000000
3÷ 2 =111100000000
1÷ 2 =0111100000000
0done.

 

Decimal to Octal


Here is an example of using repeated division to convert 1792 decimal to octal:














































Decimal Number  Operation  Quotient  Remainder  Octal Result
1792÷ 8 =22400
224÷ 8 =28000
28÷ 8 =34400
3÷ 8 =033400
0done.

 

Decimal to Hexadecimal


Here is an example of using repeated division to convert 1792 decimal to hexadecimal:







































Decimal Number  Operation  Quotient  Remainder  Hexadecimal Result
1792÷ 16 =11200
112÷ 16 =7000
7÷ 16 =07700
0done.

The only addition to the algorithm when converting from decimal to hexadecimal is that a table must be used to obtain the hexadecimal digit if the remainder is greater than decimal 9.

























Decimal:01234567
Hexadecimal:01234567


























Decimal:89101112131415
Hexadecimal:89ABCDEF

[ad id="13279"]

The addition of letters can make for funny hexadecimal values. For example, 48879 decimal converted to hex is:














































Decimal Number  Operation  Quotient  Remainder  Hexadecimal Result
48879÷ 16 =305415F
3054÷ 16 =19014EF
190÷ 16 =1114EEF
11÷ 16 =011BEEF
0done.

Other fun hexadecimal numbers include: AD, BE, FAD, FADE, ADD, BED, BEE, BEAD, DEAF, FEE, ODD, BOD, DEAD, DEED, BABE, CAFE, C0FFEE, FED, FEED, FACE, BAD, F00D, and my initials DAC.

Now on to octal conversions...

 

4. Octal Number Conversion


 

Octal to Binary


Converting from octal to binary is as easy as converting from binary to octal. Simply look up each octal digit to obtain the equivalent group of three binary digits.

























Octal:01234567
Binary:000001010011100101110111

 

















Octal  =345
Binary =011100101= 011100101 binary

 

Octal to Hexadecimal


When converting from octal to hexadecimal, it is often easier to first convert the octal number into binary and then from binary into hexadecimal. For example, to convert 345 octal into hex:

(from the previous example)

















Octal  =345
Binary =011100101= 011100101 binary

Drop any leading zeros or pad with leading zeros to get groups of four binary digits (bits):
Binary 011100101 = 1110 0101

Then, look up the groups in a table to convert to hexadecimal digits.

























Binary:00000001001000110100010101100111
Hexadecimal:01234567


























Binary:10001001101010111100110111101111
Hexadecimal:89ABCDEF

 















Binary =11100101
Hexadecimal =E5= E5 hex

Therefore, through a two-step conversion process, octal 345 equals binary 011100101 equals hexadecimal E5.
[ad id="13280"]

Octal to Decimal


Converting octal to decimal can be done with repeated division.

  1. Start the decimal result at 0.

  2. Remove the most significant octal digit (leftmost) and add it to the result.

  3. If all octal digits have been removed, you’re done. Stop.

  4. Otherwise, multiply the result by 8.

  5. Go to step 2.

































Octal Digits  Operation  Decimal Result  Operation  Decimal Result
345+33× 824
45+428× 8224
5+5229done.

The conversion can also be performed in the conventional mathematical way, by showing each digit place as an increasing power of 8.

345 octal = (3 * 82) + (4 * 81) + (5 * 80) = (3 * 64) + (4 * 8) + (5 * 1) = 229 decimal

Converting from hexadecimal is next...

 

5. Hexadecimal Number Conversion


Hexadecimal to Binary


Converting from hexadecimal to binary is as easy as converting from binary to hexadecimal. Simply look up each hexadecimal digit to obtain the equivalent group of four binary digits.

























Hexadecimal:01234567
Binary:00000001001000110100010101100111


























Hexadecimal:89ABCDEF
Binary:10001001101010111100110111101111

 



















Hexadecimal =A2DE
Binary =1010001011011110= 1010001011011110 binary

 

Hexadecimal to Octal


When converting from hexadecimal to octal, it is often easier to first convert the hexadecimal number into binary and then from binary into octal. For example, to convert A2DE hex into octal:

(from the previous example)



















Hexadecimal =A2DE
Binary =1010001011011110= 1010001011011110 binary

Add leading zeros or remove leading zeros to group into sets of three binary digits.

Binary: 1010001011011110 = 001 010 001 011 011 110

Then, look up each group in a table:

























Binary:000001010011100101110111
Octal:01234567

 























Binary =001010001011011110
Octal =121336= 121336 octal

Therefore, through a two-step conversion process, hexadecimal A2DE equals binary 1010001011011110 equals octal 121336.

[ad id="13279"]

Hexadecimal to Decimal


Converting hexadecimal to decimal can be performed in the conventional mathematical way, by showing each digit place as an increasing power of 16. Of course, hexadecimal letter values need to be converted to decimal values before performing the math.















































Hexadecimal:01234567
Decimal:01234567
Hexadecimal:89ABCDEF
Decimal:89101112131415

A2DE hexadecimal:
= ((A) * 163) + (2 * 162) + ((D) * 161) + ((E) * 160)
= (10 * 163) + (2 * 162) + (13 * 161) + (14 * 160)
= (10 * 4096) + (2 * 256) + (13 * 16) + (14 * 1)
= 40960 + 512 + 208 + 14
= 41694 decimal

Finally, why you might choose one number system over another...

 

6. Selecting a Numbering System


 

The appropriate numbering system to represent a value depends on the application. There are advantages and disadvantages to each numbering system.

When interfacing with non-engineers, decimal remains the numbering system of choice. For example, I’d have heart attack if the IRS told me that I owed them 1000000 dollars, when they actually meant to say 64 decimal.

Modern computers have lots of memory and disk space for programs. However, many low-end microcontrollers can be quite tight on space. Outputting a decimal value to a serial port or display requires the number be divided by 10 to break off each digit. Depending on the capabilities of the microcontroller, the divide-by-ten routine alone can take up more room than an entire hexadecimal output routine!

[ad id="13280"]

When diagnosing an output pin logic problem, it isn’t immediately helpful to see that the microcontroller’s port B is set to 180 decimal. I’d prefer to see the pins as 10110100 binary. The same thing is true when looking at bit flags in memory. A disadvantage of binary is that it gets lengthy fairly quickly.

When debugging dumps of memory, disks, or data streams on modern microcontroller and computers, hexadecimal provides a compact format that is easy to break into bytes and convert into bits. In my software career, I routine examine lengthy log files detailing all the bytes sent over the air on the wireless networks.

Octal has fallen out of usage over the last thirty years due to microprocessors and microcontrollers processing data in bit chunks that are not evenly divisible by 3 (4-bit, 8-bit, 16-bit, 32-bit, 64-bit) . Octal does have the advantage of requiring only number symbols (0-8), as opposed to hexadecimal (0-9, A-F). So, octal still finds some limited usage on numeric-only displays.

To summarize, I switch between using binary, decimal, and hexadecimal on a regular basis, depending which format most clearly expresses the data that the number represents.
M