Oppure

Loading
04/11/13 18:08
spode
Studiando i caratteri, i numeri (rappresentati come IEEE 754, fixed point, interi, ecc.) e le stringhe mi è balenata la seguente domanda:
come fa una CPU a distinguere questi diversi tipi (stringhe e numeri) se sono rappresentati tutti come sequenze di 0 e 1? C'è un qualche header di riconoscimento o si fa il conto dei bit (ogni 32 bit cambia ciò si vuole rappresentare)?
aaa
04/11/13 18:20
Qwertj
La CPU lavora sui bit, per lei (o lui?) è tutto un numero
Il "tipo" di dato è un'astrazione che indica solamente al programma come gestire le diverse variabili, ed è memorizzato nella RAM insieme al resto del programma e ai dati stessi
E' a livello software insomma
aaa
04/11/13 18:26
spode
Cioè che i char, per esempio, comunque vengono rappresentati con 32 bit?
E come fa a distinguere due 32 bit consecutivi??
E poi, non è il programma che indica quante celle di memoria allocare per diversi tipi di variabile (quindi sia in ROM che in RAM)?
Penso che non ho ancora capito. Scusa... :( Puoi spiegare più in lungo e largo per favore?
aaa
04/11/13 18:39
Il problema non sono le risposte ma le domande che fai che hanno poco senso, proprio perché non hai chiaro il funzionamento di tutto (ad esempio, per la CPU non ha alcun senso parlare di char o integer ...)

Per capire bene devi avere qualche base preliminare e cominciare, magari, dal capire cosa sia il codice ASCII, il sistema di numerazione binario, la rappresentazione dei dati per un sistema digitale, ecc...

Solo molto dopo puoi passare alla CPU, studiandone i blocchi, magari di una semplice non per forza una moderna e complicata. Chiarirti cosa sia il "bus degli indirizzi", il "bus dei dati", i "segnali di controllo" ...
Ultima modifica effettuata da 04/11/13 18:40
04/11/13 18:54
ZioCrocifisso
La CPU non li riconosce, sa cosa deve fare e come deve operare in base a ciò che sta scritto nel software. Per esempio, nel caso di x86, le istruzioni che compiono operazioni aritmetiche sui numeri interi sono "add", "sub", ecc. mentre quelle per i numeri a virgola mobile hanno il prefisso "f", come in fadd (in questo caso è la FPU però a eseguire i calcoli). Riguardo alla dimensione invece, alcune istruzioni hanno delle varianti (es. movd per le doubleword, movq per quadword), e quindi anche in questo caso è specificato dal software. Invece i caratteri e le stringhe sono semplicemente interi e array di interi, la CPU non li tratta in modo speciale, è a livello software che vengono rappresentati in forma testuale.
aaa
04/11/13 18:57
E in realtà anche le istruzioni "add" "sub" della CPU sono semplicemente numeri (opcode) ... le "add" "sub" sono solamente rappresentazioni umane del "lavoro" che ogni opcode fa eseguire alla CPU
18/11/13 15:51
spode
Leggendo le risposte, e in particolare una di queste, mi sembra giusto che io torni a questa domanda quando avrò studiato qualcosa in più!
Grazie ancora! =)
aaa
18/11/13 16:29
Se hai questa impressione, è sicuramente giusta ...