7

Wiem, jak komputery tłumaczą liczby na binarne. Ale nie rozumiem, że słyszałem, że komputery tłumaczą wszystko (słowa, instrukcje, ...) na binarne, a nie tylko liczby. Jak to jest możliwe?Jak komputery tłumaczą wszystko na binarne? Kiedy widzą kod binarny, skąd wiedzą, czy reprezentuje on liczbę, słowo lub instrukcję?

Czy możesz pokazać mi kilka przykładów? Na przykład jak komputer tłumaczy literę "A" na binarną?

A kiedy komputery zobaczą kod binarny, skąd mogą wiedzieć, czy ten długi ciąg 0s i 1s reprezentuje liczbę lub słowo lub instrukcję?

.

Exemple:

Załóżmy, że programista komputerowy zakodowane litery „Z” tak, że przekłada się to ciąg binarny: 11011001111011010111

Więc gdy komputer napotka ten ciąg binarny, to będzie to przetłumaczyć do litery "Z".

Ale co się stanie, gdy zapytamy ten komputer "czym jest produkt z 709 przez 1259?"

Komputer odpowiedziałby nam "892631". Ale ta liczba, po przetłumaczeniu na binarny, to 11011001111011010111.

Jak zatem może to zrobić różnicę między "Z" a "892631"?

.

Należy pamiętać, że nie wiem zbyt wiele na temat informatyki, więc proszę wyjaśnić wszystko w prostych słowach.

Odpowiedz

7

To jest doskonałe pytanie, które wymagałoby wielu lat i kilku doktoratów, aby w pełni wyjaśnić. Mogę zaoferować ci prostą odpowiedź, ale aby w pełni zrozumieć, będziesz musiał wykonać DUŻO więcej badań. Czy mogę zaproponować kilka darmowych lekcji online z MIT na temat here.

Na najniższym poziomie litera A i numer 65 są w rzeczywistości przechowywane przy użyciu tej samej sekwencji 0 i 1. 1000001 jeśli się nie mylę.

Komputer decyduje, co to jest, gdy pobiera je z pamięci. Oznacza to, że litery mogą być wyświetlane jako liczby i vice versa.

Sposób, w jaki komputer wie, czego szuka, to to, że programista mówi, czego szuka. Programista mówi, że chcę mieć numer przechowywany w takiej i takiej lokalizacji, a komputer idzie i szuka go.

Pozwala zwiększyć poziom, ponieważ rzadko programuje się na tak niskim poziomie. inne programy (zazwyczaj kompilatory, które pobierają kod taki jak C++ i zamieniają go w coś, co komputer może zrozumieć) Upewnij się, że lokalizacja, do której mamy dostęp, jest w rzeczywistości taka, jak mówiliśmy. Mają dodatkowe informacje, które mówią im, że ten konkretny zestaw liczb 1 i 0 jest w rzeczywistości typem zmiennoprzecinkowym (ma kropkę dziesiętną), podczas gdy ten zbiór jest i jest liczbą całkowitą (bez kropki dziesiętnej)

Inne typy opierają się na tych typach, większe liczby całkowite, zmiennoprzecinkowe lub ciągi znaków, i ponownie kompilatory wymuszają typy.

Jest to uproszczenie, i zdaję sobie sprawę, że wszystko tutaj nie jest dokładnie poprawne, ale doprowadzi cię na właściwą drogę.Można sprawdzić niektóre z tych tematów, aby uzyskać znacznie lepszy pomysł:

How instructions are differentiated from data?

http://en.wikipedia.org/wiki/Computer_data_storage

How is data, address and Instruction differentiated in Processor/Register/memory?

http://en.wikipedia.org/wiki/Reference_(computer_science)

Nadzieja ta czyści rzeczy się trochę. Prosimy o wyjaśnienia!

+1

Bazując na tej odpowiedzi, masz Binarny, który jest 0 i 1, i działa poprawnie na sprzęcie. Dalszy poziom abstrakcji zamienia go w Zgromadzenie, które zawiera proste instrukcje, takie jak ADD, SUB, DIV, MUL, itp. I wyjaśnia, * jak * binarny powinien wchodzić w interakcje. Było to nadal bardzo podatne na błędy i ostatecznie miałeś proste języki programowania z gramatyką i składnią, które następnie ** zostały skompilowane ** do złożenia i binarne, tłumacząc ludzkie słowa na język maszynowy. –

7

Komputery faktycznie nie tłumaczą niczego na binarne, wszystko jest binarne od samego początku, a komputer nigdy nie zna niczego innego niż binarny.

Zapisany w pamięci znak A będzie oznaczony jako 01000001, a komputer nie będzie go widział w żadnym innym formacie niż liczba binarna. Kiedy poprosimy komputer o wyświetlenie tego numeru jako znaku na ekranie, wyszuka on graficzną reprezentację dla niego w definicji czcionki, aby znaleźć inne liczby binarne, które zostaną przesłane do sprzętu ekranowego.

Na przykład, jeżeli komputer był ośmiobitowych Atari, to znaleźć osiem wartości binarnych do reprezentacji znaków A na ekranie:

00000000 
00011000 
00111100 
01100110 
01100110 
01111110 
01100110 
00000000 

Jak widać, wartości binarne by następnie przełożyć do ciemnego i jasne piksele, gdy sprzęt graficzny narysuje go na ekranie.

Podobnie, cokolwiek robimy z liczbami w komputerze, to wszystkie sposoby przenoszenia wartości binarnych wokół, wykonywania obliczeń na wartościach binarnych i tłumaczenia ich na inne wartości binarne.

Jeśli na przykład wziąć kod znaku dla A i chcesz wyświetlić ją jako liczbę dziesiętną, komputer będzie obliczyć, że reprezentacja dziesiętna liczby to cyfry 6 (110) i 5 (101), tłumaczyć, że do postaci 6 (00110110) i znaku 5 (00110101), a następnie przetłumaczyć je na ich graficzną reprezentację.

4

So how would it make a difference between "Z" and "892631"?

nie. Do komputera wszystko wynosi 0s i 1s. Nieprzetworzone bity nie mają żadnego znaczenia, dopóki procesor nie zostanie napisany, co zrobić z tymi 0 i 1!

Na przykład mogę utworzyć zmienną x i utworzyć jej wartość 0b01000001 (0b oznacza "jest to liczba, którą opisuję w systemie binarnym"). Mogłem następnie poprosić procesor, aby wydrukował dla mnie zmienną x. Ale PIERWSZY muszę powiedzieć procesorowi, CO TO JEST x!

printf("%d", x); // this prints the decimal number 65 

printf("%c", x); // this prints the character A 

Więc x sam nic nie znaczy, z wyjątkiem surowych bitów 01000001. Ale jako programista moim zadaniem jest powiedzieć komputerowi, co tak naprawdę znaczy x.

-1

Należy pamiętać, że jeśli zobaczysz literę A. To jest po prostu polecenie, aby ekran wyświetlał coś, co wygląda na A. Programista nadal musi tworzyć czcionki i zawiera dane dla tego ekranu: Jeśli kolor jest czarny. Wypełnij współrzędne pikseli pokazane literą A w tym pliku czcionek na czarno. W naszych słowach ...

+0

To nie jest kompletna odpowiedź na pytanie, a zamiast tego powinien być komentarzem. –

+0

Jeśli masz sprzęt wideo wykorzystujący tryb tekstowy, ma wbudowane czcionki, które są używane podczas skanowania rastrowego. Całe oprogramowanie musi przechowywać bajty ASCII w pamięci wideo. Zobacz także https://stackoverflow.com/questions/47186682/implementation-of-the-ascii-system/47187698#47187698, który mówi to samo, co ta odpowiedź bardziej szczegółowo, na pytanie, które pytało tylko o kody ASCII, wiele mniej ogólne niż to pytanie. –