Is there any logic behind ASCII codes' ordering?

this. __curious_geek picture this. __curious_geek · Jul 16, 2009 · Viewed 15.4k times · Source

I was teaching C to my younger brother studying engineering. I was explaining him how different data-types are actually stored in the memory. I explained him the logistics behind having signed/unsigned numbers and floating point bit in decimal numbers. While I was telling him about char type in C, I also took him through the ASCII code system and also how char is also stored as 1 byte number.

He asked me why 'A' has been given ascii code 65 and not anything else ? Similarly why 'a' is given the code 97 specifically ? Why there's a gap of 6 ascii codes between the range of capital letters and small letters ? I had no idea of this. Can you help me understand this, since this has created a great curiosity to me as well. I've never found any book so far that has discussed this topic.

What is the reason behind this ? Are ASCII codes logically organized ?

Answer

FWH picture FWH · Jul 16, 2009

There are historical reasons, mainly to make ASCII codes easy to convert:

Digits (0x30 to 0x39) have the binary prefix 110000:

0 is 110000
1 is 110001
2 is 110010

etc. So if you wipe out the prefix (the first two '1's), you end up with the digit in binary coded decimal.

Capital letters have the binary prefix 1000000:

A is 1000001
B is 1000010
C is 1000011

etc. Same thing, if you remove the prefix (the first '1'), you end up with alphabet-indexed characters (A is 1, Z is 26, etc).

Lowercase letters have the binary prefix 1100000:

a is 1100001
b is 1100010
c is 1100011

etc. Same as above. So if you add 32 (100000) to a capital letter, you have the lowercase version.