Okay, well a quick rundown is this:

In base 10, we count to 9 before we increment the next digit. This means 10^{1} is the first 2 digit number, 10^{2} is the first three digit number, et cetera. In binary (base 2), just replace the values above :D Count to 1 before you increment the next digit. Here is an example, starting at 0, we will count up to 16

0

1

10

11

100

101

110

111

1000

1001

1010

1011

1100

1101

1110

1111

10000

If you can follow that, you are on the right track! Now in Base 16, (hexadecimal), we count to 15 before we increment the next digit. Since we have only 10 digits in our number system, we just use letters A~F for the other values. So to count to 18:

0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,10,11,12,..

One cool thing about binary and hex is that converting between the two is super easy. Since 16=2^4, each hex digit is 4 binary digits!

Once you really understand binary and hex, reading assembly code will be much easier. In z80 assembly (the stuff for the calcs), you typically use 8- or 16-bit values (which means in binary, 8 or 16-digit values). Because of this and bitwise logic (which I did not at all explain here, so don't worry), you can make some very hacky codes. You said you like bending codes, right? >:D