I haven\'t learned this in programming class before, but now I need to know it. What are some good resources for learning these numbers and how to convert them? I pretty much am
In our everyday decimal system, the base number, or radix is 10.
A number system's radix tells us how many different digits are in use.
In decimal system we use digits 0 through 9.
The significance of a digit is radix ^ i, where i is digit's position counting from right, starting at zero.
Decimal number 6789 broken down:
6 7 8 9 radix ^ i
| | | | --------------
| | | +-- ones 10 ^ 0 = 1
| | +----- tens 10 ^ 1 = 10
| +-------- hundreds 10 ^ 2 = 100
+----------- thousands 10 ^ 3 = 1000
ones tens hundreds thousands
-----------------------------------------------
(9 * 1) + (8 * 10) + (7 * 100) + (6 * 1000)
= 9 + 80 + 700 + 6000
= 6789
This scheme will help us understand any number system in terms of decimal numbers.
Hexadecimal system's radix is 16, so we need to employ additional digits A...F to denote 10...15.
Let's break down hexadecimal number CDEFh in a similar fashion:
C D E F radix ^ i
| | | | --------------
| | | +-- ones 16 ^ 0 = 1
| | +----- sixteens 16 ^ 1 = 16
| +-------- 256:s 16 ^ 2 = 256
+----------- 4096:s 16 ^ 3 = 4096
ones sixteens 256:s 4096:s
-----------------------------------------------
(Fh * 1) + (Eh * 16) + (Dh * 256) + (Ch * 4096)
= (15 * 1) + (14 * 16) + (13 * 256) + (12 * 4096)
= 15 + 224 + 3328 + 49152
= 52719
We have just converted the number CDEFh to decimal (i.e. switched base 16 to base 10).
In binary system, the radix is 2, so only digits 0 and 1 are used.
Here is the conversion of binary number 1010b to decimal:
1 0 1 0 radix ^ i
| | | | --------------
| | | +-- ones 2 ^ 0 = 1
| | +----- twos 2 ^ 1 = 2
| +-------- fours 2 ^ 2 = 4
+----------- eights 2 ^ 3 = 8
ones twos fours eights
-----------------------------------------------
(0 * 1) + (1 * 2) + (0 * 4) + (1 * 8)
= 0 + 2 + 0 + 8
= 10
Octal system - same thing, radix is 8, digits 0...7 are in use.
Converting octal 04567 to decimal:
4 5 6 7 radix ^ i
| | | | --------------
| | | +-- ones 8 ^ 0 = 1
| | +----- eights 8 ^ 1 = 8
| +-------- 64:s 8 ^ 2 = 64
+----------- 512:s 8 ^ 3 = 512
ones eights 64:s 512:s
-----------------------------------------------
(7 * 1) + (6 * 8) + (5 * 64) + (4 * 512)
= 7 + 48 + 320 + 2048
= 2423
So, to do a conversion between number systems is to simply change the radix.
To learn about bitwise operators, see http://www.eskimo.com/~scs/cclass/int/sx4ab.html.