Introduction to Math for computer programming
This page is currently only a very very small fraction of what I intend it to be. If you have idea for topics or the heavenly inspiration to contribute something great to this topic: Please click that "edit" button and do it!
Please try to keep this simple and easy to understand without prior knowledge of anything beyond introductory algebra unless the topic warrants it. If you know calculus: Good for you. That doesn't mean the average viewer of this page does.
Number systems
editThe following is a list of common number systems. The names of which are derived from latin.
Base | Name | Number set | Commonly used for |
1 | Unary | 1 | Tallying (*) |
2 | Binary | 01 | Computers (**) |
3 | Ternary | 012 | |
4 | Quaternary | 0123 | |
5 | Quinary | 01234 | |
6 | Senary | 012345 | |
7 | Septenary | 0123456 | |
8 | Octal | 01234567 | Computers (***) |
9 | Nonary | 012345678 | |
10 | Decimal | 0123456789 | Ordinary Counting! |
11 | Undenary | 0123456789A | |
12 | Duodecimal | 0123456789AB | |
16 | Hexadecimal | 0123456789ABCDEF | Computers (****) |
20 | Vigesimal | Too long! | |
60 | Sexagesimal | Too long! | Clocks |
- Unary is of very limited usefulness since only positive integers can be expressed in it. The same is more-or-less true for any numbering system whose absolute value is equal to one.
- Binary is used to portray the specific values of on (1) and off (0) used in digital electronics like computers
- Octal was more commonly used in the early days of computing and especially on computers whose byte size was divisible by three. It is still used in some computing cultures and for some specific purposes but its use has been largely supplanted by hexadecimal.
- Hexadecimal is often used to portray binary numbers in a smaller, neater-seeming form
Determining number value
editBecause people tend to be most familiar with dealing with numbers in Decimal, that is the basis we will use to get a feel for a number's value.
You may determine the decimal value of a number in any given base using the following formula:
Where:
- K = Decimal value of a given number
- d = Decimal value of a value in a specified base
- B = Decimal value of the base of the number being evaluated
- i = Decimal value of the index at which the number currently being evaluated is located (0 = right-most; 1, 2, 3, etc. are 1, 2, 3, etc. places from the right-most)
In this scheme, the right-most digit in any number in any base is:
- The digit place with the smallest potential value
- Has an index (i) value of 0
It is common to determine the value of a number, starting with the right-most value. That's what I'm going to be doing in the following examples.
Converting decimal to decimal
editConverting the decimal number 931 to decimal:
1 * 10^0 = 1 3 * 10^1 = 30 9 * 10^2 = 900 900 + 30 + 1 = 931
Converting the decimal number 23 to decimal:
3 * 10^0 = 3 2 * 10^1 = 20 20 + 3 = 23
Converting binary to decimal
editConverting the binary number 0b01001100 to decimal:
0b00000000 = 0 * 2^0 = 0 0b00000000 = 0 * 2^1 = 0 0b00000100 = 1 * 2^2 = 4 0b00001000 = 1 * 2^3 = 8 0b00000000 = 0 * 2^4 = 0 0b00000000 = 0 * 2^5 = 0 0b01000000 = 1 * 2^6 = 64 0b00000000 = 0 * 2^7 = 0 64 + 8 + 4 = 76
Converting the binary number 0b11111111 to decimal:
0b00000001 = 1 * 2^0 = 1 0b00000010 = 1 * 2^1 = 2 0b00000100 = 1 * 2^2 = 4 0b00001000 = 1 * 2^3 = 8 0b00010000 = 1 * 2^4 = 16 0b00100000 = 1 * 2^5 = 32 0b01000000 = 1 * 2^6 = 64 0b10000000 = 1 * 2^7 = 128 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255
Converting hexadecimal to decimal
editConverting the hexadecimal number 0x16 to decimal:
6 * 16^0 = 6 1 * 16^1 = 16 16 + 6 = 22
Converting the hexadecimal number 0xBEEF to decimal:
F = 15 * 16^0 = 15 E = 14 * 16^1 = 224 E = 14 * 16^2 = 3,584 B = 11 * 16^3 = 45,056 45,056 + 3,584 + 224 + 15 = 48,879
Decimal
editPlace name | Decimal Value | Scientific notation |
Millions | 1,000,000 | 10^{6} |
Hundred-thousands | 100,000 | 10^{5} |
Ten-thousands | 10,000 | 10^{4} |
Thousands | 1,000 | 10^{3} |
Hundreds | 100 | 10^{2} |
Tens | 10 | 10^{1} |
Ones | 1 | 10^{0} |
10^{6} | + | 10^{5} | + | 10^{4} | + | 10^{3} | + | 10^{2} | + | 10^{1} | + | 10^{0} | = | Expressed as | = | Decimal value |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 1234567 | 1234567 | ||||||||
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||
4 | 3 | 7 | 5 | 9 | 1 | 0 | 4,375,910 | 4,375,910 | ||||||||
0 | 0 | 0 | 1 | 0 | 2 | 4 | 1,024 | 1,024 | ||||||||
9 | 9 | 9 | 9 | 9 | 9 | 9 | 9,999,999 | 9,999,999 |
Binary
editBinary relys on only two digits which are usually written 0 and 1, but are easilly encoded as "off" and "on" in switch circuits, which makes Binary the language of choice in low-level Computing and Digital Electronics.
Place name | Decimal Value | Scientific notation |
One-twenty-eights | 128 | 2^{7} |
Sixty-fours | 64 | 2^{6} |
Thirty-twos | 32 | 2^{5} |
Sixteens | 16 | 2^{4} |
Eights | 8 | 2^{3} |
Fours | 4 | 2^{2} |
Twos | 2 | 2^{1} |
Ones | 1 | 2^{0} |
2^{7} | + | 2^{6} | + | 2^{5} | + | 2^{4} | + | 2^{3} | + | 2^{2} | + | 2^{1} | + | 2^{0} | = | Expressed as | = | Decimal value |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0b00000000 | 0 | |||||||||
0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0b01000001 | 65 | |||||||||
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0b10000000 | 128 | |||||||||
1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0b10011111 | 159 | |||||||||
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0b11111111 | 255 |
Hexadecimal
editHexadecimal is commonly used to represent binary data, as it occupies only one quarter of the space when written down.
Place name | Decimal Value | Scientific notation |
No thanks! | 16,777,216 | 16^{6} |
No thanks! | 1,048,576 | 16^{5} |
No thanks! | 65,536 | 16^{4} |
40-96s | 4,096 | 16^{3} |
256s | 256 | 16^{2} |
Sixteens | 16 | 16^{1} |
Ones | 1 | 16^{0} |
16^{7} | + | 16^{6} | + | 16^{5} | + | 16^{4} | + | 16^{3} | + | 16^{2} | + | 16^{1} | + | 16^{0} | = | Expressed as | = | Decimal value |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0x00000000 | 0 | |||||||||
0 | 0 | 0 | 0 | 0 | 0 | 4 | 1 | 0x41 | 65 | |||||||||
D | E | A | D | B | E | E | F | 0xDEADBEEF | 3,735,928,559 | |||||||||
0 | 0 | 0 | 0 | 0 | F | 7 | 3 | 0xF73 | 3,955 | |||||||||
F | F | F | F | F | F | F | F | 0xFFFFFFFF | 4,294,967,295 |
Corollary
editIn all number systems, prefixed zeros can be ignored (do not affect the value represented), however common practice is to prefix all octal numbers with a leading 0 (zero), all hexadecimal values with 0x and all binary numbers with zeros so that it contains a number of digits which is divisible by eight.
Decimal Value | Binary Value | Hexadecimal Value |
000 | 00000000 | 00 |
001 | 00000001 | 01 |
002 | 00000010 | 02 |
003 | 00000011 | 03 |
004 | 00000100 | 04 |
005 | 00000101 | 05 |
006 | 00000110 | 06 |
007 | 00000111 | 07 |
008 | 00001000 | 08 |
009 | 00001001 | 09 |
010 | 00001010 | 0A |
011 | 00001011 | 0B |
012 | 00001100 | 0C |
013 | 00001101 | 0D |
014 | 00001110 | 0E |
015 | 00001111 | 0F |
016 | 00010000 | 10 |
017 | 00010001 | 11 |
018 | 00010010 | 12 |
019 | 00010011 | 13 |
020 | 00010100 | 14 |
021 | 00010101 | 15 |
022 | 00010110 | 16 |
023 | 00010111 | 17 |
024 | 00011000 | 18 |
--- | -------- | -- |
254 | 11111110 | FE |
255 | 11111111 | FF |