+ 1
1mb of memory is actually a little bit more than exactly 1mb in the same way that 1kb is actually 1024 bytes.
So 1mb is 1024*1024 in the same way that a million is a 1000*1000. (You can do the maths).
If I have to do hex in my head I normally relate everything back to 100h == 256d. So 1kb is 400h since 1024=256*4.
So 1mb = 400h*400h = 100000h. The highest address the system can therefore show is actually 0XFFFFF - which is a 20bit address.
The reason it is 1 less is the same reason there are 100 2digit (or smaller) decimal numbers (0-99), but 99 is the highest i.e. one less than 100.



