Nella memoria interna del computer Char value, string e integer in che modo differenziano il tempo di memorizzazione e recupero

-5

Nella memoria interna del computer Char value, string e integer come differenziano il tempo di memorizzazione e recupero.

  1. Char A = ASCI value 127
  2. Valore int 127

Il binario è lo stesso di come il computer comprende questo valore ..

    
posta user3550931 12.10.2016 - 10:18
fonte

1 risposta

2

È tutto basato sul contesto. In realtà non differiscono affatto.

Supponiamo di avere due array. Uno contiene i personaggi

foo = 'test'

un altro contiene i seguenti valori decimali:

bar = [116, 101, 115, 116, 0]

Ora diciamo che abbiamo una funzione sum che prende una matrice e somma i suoi valori. Lo chiamiamo con

sum(bar)

e il risultato è 448.

Ora chiamalo con

sum(foo)

e il risultato è nuovamente 448. Sorpresa.

Ok, un'altra funzione selezionata uppercase che prende una stringa e la restituisce in maiuscolo.

uppercase(foo)

restituisce 'TEST', ma

uppercase(bar)

farà lo stesso!

Questo ignora qualsiasi tipo di controllo che il tuo linguaggio di programmazione può fare. Quindi, se hai definito una variabile come stringa e l'altra come una matrice di numeri interi, il compilatore potrebbe lamentarsi e il tuo codice non verrà compilato. Ma questa è una sorta di "meta" che fa presupposizioni sui tuoi dati che non hanno nulla a che fare con la rappresentazione molto più semplice sul livello di memoria in cui tutte le cose sono solo numeri.

Ma se hai una lingua in cui puoi disattivarla o ignorarla o usare l'assemblatore direttamente a livello di macchina dove le tue "variabili" sono solo indirizzi in memoria, gli esempi precedenti mostrano il comportamento sottostante.

In realtà ho aggiunto lo zero finale nel mio esempio solo perché alcune lingue richiederebbero che una stringa venisse chiusa in quel modo. Quindi anche questo non è esattamente obbligatorio, ma esiste solo perché un certo contesto lo richiede.

Ma questa cosa è vera solo per le semplici rappresentazioni di stringa. Il linguaggio C si aspetta che la stringa termini con zero, Pascal si aspetterebbe che avesse la lunghezza come primo elemento: [4, 116, 101, 115, 116]

Le lingue orientate agli oggetti potrebbero memorizzarle in modo ancora più complicato. Le stringhe non ASCII come UTF8, Unicode etc sarebbero piuttosto complesse. (anche se la parte dei dati si ritrova a un certo punto solo una serie di numeri che in teoria possono essere gestiti in qualsiasi modo)

    
risposta data 12.10.2016 - 10:35
fonte