https://slides.com/georgelee/ics141-data-representation/live
People naturally think of numbers in base 10. What does it mean to think of a number in base 10?
Each digit represents a power of 10. For example:
141 = 1 * 10^2 + 4 * 10^1 + 1 * 10^0
We know computers work in binary (on/off). What does a base 2 expansion of a binary number look like? What is the base 2 expansion of (1000 1101)2? What is the value of this number?
Looking at binary is kinda rough. We can group these bits to make them easier to read. We can group bits into groups of 3. Since 2^3 = 8, we have octal.
Our previous example was (1000 1101)2. In octal, it would be (010 001 101)2 = (215)8.
What is the decimal value of (117)8?
Users may have 3 types of permissions (or any combination): Read, write, execute. There's also separate permissions for owner, group, and everyone.
Since the permission is on/off, we can represent this in octal notation.
What permissions would 777 have? 755? 644? 400?
We can also use groups of 4 to represent the bits. This is hexadecimal notation (2^4 = 16). This is the most common representation of bits.
The values are 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. So our example would be (1000 1101)2 = (8D)16.
What's the decimal value of (6F)16?
Recall the definition of a base 10 expansion. We can generate an expansion by successively dividing by 10. The remainder at each step is the digit in the number going from right to left.
Consider 311.
* 311 / 10 = 31 * 10 + 1
* 31 / 10 = 3 * 10 + 1
* 3 / 10 = 0 * 10 + 3
Digits go from bottom to top, and we have 311.
Now let's convert 311 to base 8.
* 311 / 8 = 38 * 8 + 7
* 38 / 8 = 4 * 8 + 6
* 4 / 8 = 0 * 8 + 4
Thus, 311 = (467)8.
Your turn. Convert 241 to base 16.
Thus far, we have been working with positive integers. To represent a negative integer, we need something to represent the sign.
For a signed integer, the leftmost (most significant) bit is the sign bit. 0 is positive and 1 is negative.
The simplest way to represent signed integers is using 1's complement. Positive integers remain the same (with a leading 0). Negative integers are represented by taking the positive representation and flipping all the bits (1's become 0's and 0's become 1's).
Consider 3 = (0011)2. What is -3 using one's complement?
What happens when you add the two together?
The more common way to represent signed integers is using 2's complement. Positive integers remain the same. For negative integers, we take the positive representation and flip all the bits. Then, we add 1.
Consider 7 = (0111)2. What is the two's complement of 7?
What happens when you add the two together?