4 ms·
If you look at each byte as being 2 bits of 'group' and 5 bits of 'character'; 00 11011 is Escape 10 11011 is [ So when we do ctrl+[ for escape (eg, i
by soneil 10y ago
If you look at each byte as being 2 bits of 'group' and 5 bits of 'character';
00 11011 is Escape
10 11011 is [
So when we do ctrl+[ for escape (eg, in old ansi 'escape sequences', or in more recent discussions about the vim escape key on the 'touchbar' macbooks) - you're asking for the character 11011 ([) out of the control (00) set.
Any time you see \n represented as ^M, it's the same thing - 01101 (M) in the control (00) set is Carriage Return.
Likewise, when you realise that the relationship between upper-case and lower-case is just the same character from sets 10 & 11, it becomes obvious that you can, eg, translate upper case to lower case by just doing a bitwise or against 64 (0100000).
And 40h & 60h .. having a nice round number for the offset mostly just means you can 'read' ascii from binary by only paying attention to the last 5 bits. A is 1 (00001), Z is 26 (11010), leaving us something we can more comfortably manipulate in our heads.
I won't claim any of this is useful. But in the context of understanding why the ascii table looks the way it does, I do find four sets of 32 makes it much simpler in my head. I find it much easier to remember that A=65 (41h) and a=97 (61h) when I'm simply visualizing that A is the 1st character of the uppercase(40h) or lowercase(60h) set.
- amackera 10y agoThis single comment has cleared up so much magic voodoo. I feel like everything fell into place a little more cleanly, and that the world makes a little bit more sense. Thank you!
- FabHK 10y agoThe article linked mentions that the ctrl key (back then?) just clears the top 3 bits of the octet.
- bogomipz 10y agoAwesome, yes this makes total sense. I'm glad I asked. Cheers.
- ksrm 10y agoI can't believe I've only just realised where the Control key gets its name from. Thank you!