Numeral systems in Python
1 Numeral systems
- Decimal: Base 10 where $0\leq\text{one place}\leq 9$
- Binary: Base 2 where $0\leq\text{one place}\leq 1$
- Octal: Base 8 where $0\leq\text{one place}\leq 7$
- Hexadecimal: Base 16 where $0\leq\text{one place}\leq 15$
- Since a number greater than 9 takes up two places, we use A–F for 10–15, respectively.
- For example, A is 10 and F is 15.
1.1 Conversion from decimal to binary
Let’s say we have a decimal number $x$ and want to convert it to a binary number. Follow these steps:
- Divide $x$ by $2$ and assign its quotient to $q$ and remainder to $r$. This $r$ takes the $2^0$'s place.
- Divide $q$ (from the previous step) by $2$ and assign its quotient to $q$ and remainder to $r$ (overwrite them). This new $r$ takes the $2^1$'s place.
- Repeat step 2 until $q$ becomes $0$. Each $r$ takes the next higher $2^n$'s place.
For example, $x=53$ and $y$ is the desired binary number.
- Divide 53 by 2: $q=26, r=1, y=1$
- Divide 26 by 2: $q=13, r=0, y=01$
- Divide 13 by 2: $q=6, r=1, y=101$
- Divide 6 by 2: $q=3, r=0, y=0101$
- Divide 3 by 2: $q=1, r=1, y=10101$
- Divide 1 by 2: $q=0, r=1, y=110101$
- Here, you can actually save one step by placing $q=1$ from step 5 in the $2^5$'s place.
So the binary number for 53 is 110101.
1.1.1 A table method
$q$ | $r$ | |
---|---|---|
2 | 53 | |
2 | 26 | 1 |
2 | 13 | 0 |
2 | 6 | 1 |
2 | 3 | 0 |
1* | 1 |
In this method, you can stop when $q$ becomes smaller than your target base 2. Now, collect all 1s and 0s starting from the last $q$ (*) from left to right. That is, 1, 1, 0, 1, 0, and 1. You get 110101.
1.2 Conversion from binary to decimal
Now, we want to go back from 110101 to 53. The right-most 1 is in the $2^0$'s place (ones place) while the left-most 1 in the $2^5$'s place (32s place). Starting from the $2^0$'s place, we complete this table:
Binary | Place | Decimal |
---|---|---|
1 | 20 | $1\times2^0=1$ |
0 | 21 | $0\times2^1=0$ |
1 | 22 | $1\times2^2=4$ |
0 | 23 | $0\times2^3=0$ |
1 | 24 | $1\times2^4=16$ |
1 | 25 | $1\times2^5=32$ |
The sum of the Decimal column is 53.
1.3 Other conversions
Conversions between other numeral systems are exactly the same except that you have to use the appropriate base number instead of 2 in the above examples for binary conversions.
1.4 Python syntax
- Decimal:
53
- Binary:
0b110101
- Octal:
0o65
- Hexadecimal:
0x35
2 Homework: Conversions between numeral systems
- Convert a decimal number
2803
to- binary,
- octal, and
- hexadecimal.
- Convert a hexadecimal number
0xa2
to- decimal,
- binary, and
- octal.
Show your full work. You’ll get a zero if you just show me the correct answers. Please submit your full work in FirstLastname_numeral.pdf.