Finns det någon logik för varför i det binära alfabetet, a = 01000001 och samma med de andra bokstäverna, eller valde någon bara slumpmässigt den strängen med siffror för att representera en?


Bästa svaret

Ja, det finns det.

Den nedre delen av 8-bitarsområdet är reserverat för kontrollkoder. Speciellt kan 00000000 inte tilldelas ett texttecken, eftersom du vill att ett tomt hålkort ska betyder , ja … ingenting. Dessutom är det trevligt att kunna rensa ett misstag genom att stansa en hel rad, så 11111111 tilldelas DELETE-kontrollkoden, och i kombination med att texttecken måste passa i 7 bitar för bakåtkompatibilitet betyder det den höga delen av intervallet blir också reserverad för kontrollkoder.

Så, alfabetiska tecken måste gå någonstans i mitten. Det skulle vara bekvämt om du kunde konvertera mellan stora och små bokstäver genom att vända en enda bit, vilket innebär att stora och små bokstäver måste separeras med ett intervall på 32 (den minsta effekten av två större än 26). Det är också praktiskt om bokstäver i ett fall är sammanhängande, med skiljetecken grupperade i ändarna, i de 6 kodpunkterna du har kvar i varje 32-teckenintervall, och om sekvensen av kodpunkter för alfabetiska tecken matchar deras traditionella alfabetiska ordning. Det skulle vara ännu bekvämare om du kunde konvertera en alfabetisk karaktär till dess numeriska alfabetiska position med en enkel bitmask.

Allt detta begränsar allvarligt möjligheterna för var du kan starta de alfabetiska tecknen. Av det begränsade utbudet av möjligheter valdes 65 eller 0100001 för A och 97, eller 01100001, valdes för a (snarare än, säg, tvärtom) av historiska skäl, för att upprätthålla bakåt kompatibilitet med gamla 5-bitars endast kapselsystem, där ”A” faktiskt tilldelas kodpunkt 1 (00001), vilket möjliggör konvertering mellan kodningar genom att enkelt lägga till eller trunka ett prefix.

Svar

Vilket “binärt alfabet”? Menar du ASCII? För om du gör det, så är ”a” inte lika med 0100 0001. Ett stort ”A” motsvarar 0100 0001. ASCII-tecknet för ”a” är 0110 0001. Om du vill skriva ”a” i EBCDIC, för exempel, då skulle det vara 1000 0001 och A skulle vara 1100 0001.

De första 32 tecknen i ASCII-tabellen är icke-utskrivna kontrolltecken som ursprungligen användes för att styra hårdvaran – till exempel 0000 0111 kallas BEL, eftersom det brukade fungera klockan på de gamla elektromekaniska teletypsmaskinerna som ASCII ursprungligen uppfanns för. Utskrivna tecken startade bara med ASCII decimal 33, med skiljetecken först (!) Och sedan siffror, sedan versaler och sedan små bokstäver och slutade med DEL-tangenten vid ASCII 127, den övre änden av de 7 bitarna som användes vid det tid.

Så nej, någon ”valde inte slumpmässigt ett antal siffror”, det var en standard som American Standards Association (nu ANSI) utarbetat 1960, baserat på befintliga telegrafkoder. Den standarden har fortsatt att uppgraderas och utökas, men de första 128 tecknen och kontrollerna har aldrig ändrats.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *