7

So come i computer traducono i numeri in binario. Ma quello che non capisco è che ho sentito che i computer traducono tutto (parole, istruzioni, ...) in binari, non solo numeri. Com'è possibile?In che modo i computer traducono tutto in binario? Quando vedono un codice binario, come fanno a sapere se rappresenta un numero o una parola o un'istruzione?

Puoi mostrarmi qualche esempio? Come fa un computer a tradurre la lettera "A" in binario?

E quando i computer vedono un codice binario, come possono sapere se quella lunga stringa di 0 e 1 rappresenta un numero o una parola o un'istruzione?

.

Esempio:

Diciamo che un programmatore di computer codificato la lettera "Z" in modo che si traduce in questa stringa binaria: 11011001111011010111

Così, quando il computer si incontrano questa stringa binaria, sarà tradurlo alla lettera "Z".

Ma cosa succede quando chiediamo a questo computer "qual è il prodotto di 709 per 1259?"

Il computer rispondeva "892631". Ma quel numero, quando tradotto in binario, è 11011001111011010111.

Quindi, come farebbe la differenza tra "Z" e "892631"?

.

Si prega di notare che non so molto di informatica, quindi per favore spiega tutto in termini semplici.

risposta

7

Questa è una domanda eccellente, che richiede anni e numerosi dottorati di ricerca. Posso offrirti una risposta semplicistica, ma per comprendere appieno devi fare MOLTA ricerca in più. Potrei suggerire alcuni corsi online gratuiti dal MIT sull'argomento here.

Al livello più basso, la lettera A e il numero 65 sono infatti memorizzati utilizzando la stessa sequenza di 0 e di 1. 1000001 se non mi sbaglio.

Il computer decide quindi cosa è quando lo prende dalla memoria. Ciò significa che le lettere possono essere visualizzate come numeri e viceversa.

Il modo in cui il computer sa cosa sta cercando è che il programmatore indichi ciò che cercava. Il programmatore dice che voglio un numero memorizzato in tale e tale posizione, e il computer va e lo cerca.

Consente di aumentare un livello, perché raramente i programmi si programmano a un livello così basso. altri programmi (di solito compilatori che prendono codice come C++ e lo trasformano in qualcosa che il computer può capire) Assicurati che la posizione a cui stiamo accedendo sia proprio quello che abbiamo detto. Hanno informazioni extra che dicono loro che questo particolare set di 1 e 0 è in realtà un tipo a virgola mobile (ha un punto decimale) mentre questo insieme è e intero (senza virgola decimale)

Quindi altri tipi si basano su questi tipi, interi più grandi, o virgola mobile, o stringhe di caratteri, e ancora una volta i compilatori applicano i tipi.

Questa è una semplificazione eccessiva e mi rendo conto che tutto qui non è esattamente corretto, ma ti porterà sulla strada giusta.Si potrebbe verificare alcuni di questi argomenti per avere un'idea molto più chiara:

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)

Spero che questo cancella le cose un po '. Sentiti libero di chiedere chiarimenti!

+1

Sulla base di questa risposta, hai Binario che è lo 0 e l'1 e funziona correttamente sull'hardware. Un ulteriore livello di astrazione lo trasforma in Assembly, che contiene semplici istruzioni come ADD, SUB, DIV, MUL, ecc. E spiega * come * il binario deve interagire. Questo era ancora molto incline agli errori e alla fine hai avuto linguaggi di programmazione semplici con grammatiche e sintassi, che sono poi ** compilati ** in assembly e binari, traducendo le parole umane in linguaggio macchina. –

7

I computer in realtà non traducono nulla in binario, è tutto binario dall'inizio e il computer non conosce mai altro che binario.

Il carattere A memorizzato in memoria sarebbe 01000001 e il computer non lo vede come se non fosse un numero binario. Quando chiediamo al computer di visualizzare quel numero come un carattere sullo schermo, cercheremo la rappresentazione grafica per esso in una definizione di carattere per trovare altri numeri binari da inviare all'hardware dello schermo.

Per esempio, se il computer è stato un otto bit Atari, si troverebbe otto valori binari per rappresentare il carattere A sullo schermo:

00000000 
00011000 
00111100 
01100110 
01100110 
01111110 
01100110 
00000000 

Come si può vedere, i valori binari sarebbe poi tradurre al buio e pixel luminosi quando l'hardware grafico lo disegnerebbe sullo schermo.

Analogamente, qualunque cosa facciamo con i numeri nel computer, è tutto il modo di spostare valori binari, eseguire calcoli su valori binari e tradurli in altri valori binari.

Se ad esempio prendere il codice carattere per A e vuole visualizzarlo come numero decimale, il computer potrebbe calcolare che la rappresentazione decimale del numero è le cifre 6 (110) e 5 (101), tradurre che al personaggio 6 (00110110) e al carattere 5 (00110101), quindi tradurli nella loro rappresentazione grafica.

4

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

E non lo fa. Al computer, tutto è 0 e 1. I bit grezzi non hanno significato fino a quando il processore non DETRÀ cosa fare con quegli 0 e gli 1!

Ad esempio, è possibile creare una variabile x e impostarne il valore 0b01000001 (0b significa "questo è un numero che sto descrivendo in binario"). Potrei quindi chiedere al processore di stampare la variabile x sullo schermo per me. Ma PRIMA devo dire al processore COSA è x!

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

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

Così x per sé non significa nulla, eccetto i bit prime 01000001. Ma come programmatore è il mio lavoro dire al computer cosa significa veramente x.

-1

Ricorda che se vedi la lettera A. È solo un comando per lo schermo per visualizzare qualcosa che assomiglia a A. Il programmatore ha ancora bisogno di creare caratteri e che contiene i dati per lo schermo come questo: Se il il colore è nero. Riempi le coordinate pixel indicate dalla lettera A in questo file di font nero. Nelle nostre parole ...

+0

Questa non è una risposta completa alla domanda e dovrebbe essere invece un commento. –

+0

Oppure se si dispone di hardware video utilizzando una modalità di testo, dispone di caratteri incorporati che utilizza durante la scansione raster. Tutto il software deve fare è memorizzare i byte ASCII nella memoria video. Vedi anche https://stackoverflow.com/questions/47186682/implementation-of-the-ascii-system/47187698#47187698 che dice la stessa cosa di questa risposta in modo più dettagliato, su una domanda che riguarda solo i codici ASCII, molto meno generale di questa domanda. –