Czy jest jakaś logika, dlaczego w alfabecie binarnym a = 01000001 i to samo z innymi literami, czy też ktoś po prostu losowo wybrał ten ciąg liczb, aby reprezentować?


Najlepsza odpowiedź

Tak, jest.

Dolna część zakresu 8-bitowego jest zarezerwowana dla kodów sterujących. W szczególności 00000000 nie może być przypisane do znaku tekstowego, ponieważ chcesz, aby pusta karta dziurkowana oznaczała , cóż… nic. Dodatkowo fajnie jest móc usunąć błąd przez wybijanie całego wiersza, więc 11111111 zostaje przypisany do kodu sterującego DELETE, aw połączeniu z faktem, że znaki tekstowe muszą zmieścić się w 7 bitach, aby zapewnić zgodność wsteczną, oznacza to górny koniec zakresu jest również zarezerwowany dla kodów sterujących.

Zatem znaki alfabetu muszą znajdować się gdzieś pośrodku. Byłoby wygodnie, gdybyś mógł konwertować między dużymi i małymi literami, odwracając jeden bit, co oznacza, że ​​znaki wielkich i małych liter muszą być oddzielone odstępem 32 (najmniejsza potęga dwóch jest większa niż 26). Jest to również wygodne, jeśli litery w wielkości liter są ciągłe, ze znakami interpunkcyjnymi zgrupowanymi na końcach, w 6 punktach kodowych, które pozostały w każdym 32-znakowym zakresie, oraz jeśli sekwencja punktów kodowych dla znaków alfabetu odpowiada ich tradycyjnemu porządkowi alfabetycznemu. Byłoby jeszcze wygodniej, gdybyś mógł przekonwertować znak alfabetyczny na jego numeryczną pozycję alfabetyczną za pomocą prostej maski bitowej.

Wszystko to poważnie ogranicza możliwości rozpoczęcia znaków alfabetu. Z tego ograniczonego zakresu możliwości 65 lub 0100001 zostało wybrane jako „A”, a 97 lub 01100001 zostało wybrane jako „a” (zamiast, powiedzmy, na odwrót) ze względów historycznych, aby zachować wstecz kompatybilność ze starymi 5-bitowymi systemami tekstowymi tylko z wielkimi literami, w których „ A jest w rzeczywistości przypisany punkt kodowy 1 (00001), umożliwiający konwersję między kodowaniami poprzez proste dodanie lub obcięcie prefiksu.

Odpowiedź

Jaki „alfabet binarny”? Masz na myśli ASCII? Bo jeśli tak, to „a” nie równa się 0100 0001. Wielka litera „A” jest równoważna 0100 0001. Znak ASCII dla „a” to 0110 0001. Natomiast jeśli chciałbyś napisać „a” w EBCDIC, dla na przykład byłoby to 1000 0001, a A byłoby 1100 0001.

Pierwsze 32 znaki w tabeli ASCII to niedrukowalne znaki sterujące, które były pierwotnie używane do sterowania sprzętem – na przykład 0000 0111 nazywa się BEL, ponieważ działał dzwonek na starych elektromechanicznych maszynach dalekopisowych, dla których pierwotnie wynaleziono ASCII. Wydrukowane znaki zaczynały się od ASCII po przecinku 33, gdzie najpierw znaki interpunkcyjne (!), Potem cyfry, potem wielkie litery, potem małe litery, kończąc na klawiszu DEL w ASCII 127, na samym górnym końcu 7 bitów, które były używane w tym czas.

Więc nie, ktoś nie „losowo wybrał ciągu liczb”, był to standard opracowany przez Amerykańskie Stowarzyszenie Normalizacyjne (obecnie ANSI) w 1960 r. w oparciu o istniejące wcześniej kody telegraficzne. Ten standard był nadal aktualizowany i rozszerzany, ale pierwszych 128 znaków i elementów sterujących nigdy nie zostało zmienionych.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *