A digit's weight is what one unit in its position is worth. Its value is digit × weight.
In base b, number the positions from the right, starting at 0. Position p has weight bᵖ:
- binary: 1, 2, 4, 8, 16, 32, …
- octal: 1, 8, 64, 512, …
- decimal: 1, 10, 100, 1000, …
- hexadecimal: 1, 16, 256, 4096, …
In binary each digit is 0 or 1, so a number's value is just the sum of the weights that sit over a 1. That's why it helps to write the weights above the bits before converting.
Bit positions are named after their weights' exponents. Bit 0 is the LSB, with weight 1. In an n-bit number, bit n − 1 is the MSB, with weight 2ⁿ⁻¹.
In twos complement the MSB's weight is negative (−2ⁿ⁻¹), and every other weight stays the same. That one change is the whole difference between reading bits as signed or unsigned.