Er der nogen logik til, hvorfor i det binære alfabet, a = 01000001 og det samme med de andre bogstaver, eller valgte nogen tilfældigt den streng med tal for at repræsentere en?


Bedste svar

Ja, der er.

Den nederste del af 8-bit-området er forbeholdt kontrolkoder. Især kan 00000000 ikke tildeles et teksttegn, fordi du vil have et blankt hulkort til betyder , ja … intet. Derudover er det rart at være i stand til at fjerne en fejl ved at slå en hel række, så 11111111 tildeles DELETE-kontrolkoden, og kombineret med det faktum, at teksttegn skal passe i 7 bits for bagudkompatibilitet, betyder det den høje ende af området bliver også forbeholdt kontrolkoder.

Alfabetiske tegn skal altså gå et eller andet sted i midten. Det ville være praktisk, hvis du kunne konvertere mellem store og små bogstaver ved at vende en enkelt bit, hvilket betyder, at store og små bogstaver skal være adskilt med et interval på 32 (den mindste effekt på to større end 26). Det er også praktisk, hvis bogstaver i en sag er sammenhængende med tegnsætningstegn grupperet i enderne, i de 6 kodepunkter, du har tilbage i hvert interval på 32 tegn, og hvis rækkefølgen af ​​kodepunkter for alfabetiske tegn svarer til deres traditionelle alfabetiske rækkefølge. Det ville være endnu mere praktisk, hvis du kunne konvertere en alfabetisk karakter til dens numeriske alfabetiske position med en simpel bitmaske.

Alt dette begrænser alvorligt mulighederne for, hvor du kan starte de alfabetiske tegn. Ud af det begrænsede udvalg af muligheder blev 65 eller 0100001 valgt til A, og 97 eller 01100001 blev valgt til a (snarere end f.eks. Omvendt) af historiske årsager for at opretholde baglæns kompatibilitet med gamle 5-bit-kun-caps-tekstsystemer, hvor A faktisk er tildelt kode punkt 1 (00001), hvilket muliggør konvertering mellem kodninger ved simpel tilføjelse eller trunkering af et præfiks.

Svar

Hvilket “binært alfabet”? Mener du ASCII? For hvis du gør det, så svarer “a” ikke til 0100 0001. En stor bogstav “A” svarer til 0100 0001. ASCII-tegnet for “a” er 0110 0001. Mens du vil skrive “a” i EBCDIC, for eksempel, så ville det være 1000 0001, og A ville være 1100 0001.

De første 32 tegn i ASCII-tabellen er ikke-udskrivning, kontroltegn, der oprindeligt blev brugt til at kontrollere hardwaren – for eksempel 0000 0111 kaldes BEL, fordi det plejede at arbejde klokken på de gamle elektromekaniske teletypemaskiner, som ASCII oprindeligt blev opfundet til. Udskrevne tegn startede kun med ASCII decimal 33, med tegnsætningstegn først (!) Derefter cifre, derefter store bogstaver, derefter små bogstaver, der sluttede med DEL-tasten ved ASCII 127, den øverste ende af de 7 bits, der blev brugt ved det tid.

Så nej, nogen valgte ikke “tilfældigt en række numre”, det var en standard, der blev udarbejdet af American Standards Association (nu ANSI) i 1960, baseret på allerede eksisterende telegrafkoder. Denne standard er fortsat opgraderet og udvidet, men de første 128 tegn og kontroller er aldrig blevet ændret.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *