La stampa di numeri comporta la conversione dei numeri in caratteri?

1

Nei linguaggi di programmazione, quando vengono stampati numeri (sia interi che reali), vengono prima convertiti nei codici dei caratteri leggibili che sono pensati per rappresentare i numeri, quindi i codici vengono decodificati nei caratteri leggibili ?

Ad esempio, in C, funzioni come printf possono stampare il valore di una variabile intera a su schermo o file. Supponiamo che il valore di a sia 1. Fa printf converti prima il numero 1 al numero 0x31 che è il codice ASCII di carattere 1 e poi decodifica 0x31 a carattere 1 nel suo uscita?

Grazie e saluti!

    
posta Tim 22.07.2011 - 22:30
fonte

3 risposte

7

printf () fa la prima parte di quello che dici, con la specifica di stampa "% d". Un numero in una variabile è tipicamente in binario complementare a uno (anche se esistono altre convenzioni e sono state utilizzate) e il codice in printf () converte un numero 1 in un codice ASCII e di solito in 8 bit.

Dipende dal dispositivo di output, xterm, printer, dumb terminal, what-have-you, prendere i byte e trasformarli in qualcosa di leggibile dagli umani. Un xterm converte il valore di byte 0x31 (se è in modalità ASCII o UTF-8) in un bitmap, a seconda del font e della dimensione di ciò che stampa. Un tradizionale teletype dell'era glaciale avrebbe colpito meccanicamente la carta con un tasto '1'.

    
risposta data 22.07.2011 - 22:37
fonte
1

Generalmente sì. L'output sulla console viene solitamente eseguito utilizzando caratteri ASCII. Il motore di rendering nel BIOS / OS (a seconda di quale esegue il rendering) interpreta il carattere ASCII e imposta i pixel corretti da visualizzare.

Tecnicamente il computer conosce solo 1 e 0. I compilatori scrivono il codice per convertire il valore ASCII 0x31 in bit. Il motore di rendering prende quindi quell'informazione e determina quali comandi inviare al display. Il display lo prende e lo usa per determinare quali pixel illuminare e come. C'è un'incredibile quantità di codice che visualizza effettivamente il personaggio sullo schermo.

    
risposta data 22.07.2011 - 22:38
fonte
1

Sì. Fino a 0x31. C è coinvolto nella conversione del valore di byte 0x31 in un simbolo ideografico, mostrato come pixel sullo schermo? No. Questa parte è implementata in hardware, o il programmatore può presumere che sia hardware (quando nella maggior parte dei casi contemporanei è un software di sistema).

Se vuoi sapere dove finisce esattamente il software, allora è un'area della memoria di sistema, contenente i codici byte dei caratteri, che fisicamente può non essere una RAM comune, ma una risorsa indirizzabile RAM o RAM all'interno dell'hardware video. (che è un'implementazione molto vecchia, su macchine contemporanee con OS completo ci sono circa 5 riferimenti di mappatura della memoria e software / firmware in cima a questo).

    
risposta data 22.07.2011 - 23:43
fonte

Leggi altre domande sui tag