Perché i tipi di dati come int e float hanno valori massimi

-2

in C #, un tipo di dati int ha un valore massimo di 2.147.483.647 e un valore massimo flottante è 340282300000000000000000000000000000000

che cosa causa a questi tipi di dati i valori massimi, da dove provengono quei numeri?

    
posta Jamisco 03.09.2017 - 07:07
fonte

2 risposte

8

Provengono dal fatto che questi tipi sono limitati a un certo numero di bit. Nel caso di 2.147.483.647, stiamo parlando di un valore firmato a 32 bit. Per 32 bit ci sono solo 4.294.967.294 combinazioni possibili di 1 e 0. La metà di queste rappresentazioni sarà negativa e metà sarà positiva. (Beh, in realtà uno di questi sarà 0, che non è né negativo né positivo, ma ottieni il punto.)

Diamo un'occhiata a un semplice esempio. Prendiamo un numero a 2 bit. Esistono 4 possibili combinazioni:

00 = 0
01 = 1
10 = 2
11 = 3

Possiamo avere 4 valori non negativi. Oppure, se vogliamo includere i negativi, possiamo avere 2 negativi, 0 e 1 positivi:

00 = 0
01 = 1
10 = -2
11 = -1

Per 3 bit, otteniamo:

000 = 0
001 = 1
010 = 2
011 = 3
100 = 4
101 = 5
110 = 6
111 = 7

Per i valori firmati, otteniamo:

000 = 0
001 = 1
010 = 2
011 = 3
100 = -4
101 = -3
110 = -2
111 = -1

Per capire come vengono creati i valori negativi, puoi leggere l'articolo di Wikipedia sul formato di completamento 2s .

Comprendere la virgola mobile è più complicato, ma alla fine si riduce alla stessa ragione. Il numero di bit utilizzati per rappresentare il numero limita il numero di valori che possono essere rappresentati. (Se sei interessato leggi il IEEE 754 formato a virgola mobile.)

    
risposta data 03.09.2017 - 07:37
fonte
0

Perché questi tipi dovrebbero assumere una singola parola (sotto la maggior parte delle architetture), il che consente alle operazioni aritmetiche di essere estremamente veloci grazie al supporto a livello ISA. Puoi assolutamente creare un tipo "vero" intero o razionale (questo è l'approccio adottato da molti linguaggi funzionali e di scripting), ma questo potrebbe ridurre le prestazioni in alcuni programmi.

    
risposta data 03.09.2017 - 07:28
fonte

Leggi altre domande sui tag