Domanda

Che cosa le formule matematiche per calcolare il valore MIN e MAX di tipo integrale con la calcolatrice. So che è possibile utilizzare Integer.Max o Integer.Min ecc o cercarlo su MSDN però voglio sapere come calcolarlo.

È stato utile?

Soluzione

Per i tipi senza segno:

  • Min value = 0
  • Valore massimo = (2 ** (numero di bit)) - 1

Quindi, per UInt32:

Min value = 0

Max value = (2 ** 32) - 1
          = 4294967296 - 1
          = 4294967295

Per i tipi firmati:

  • Valore minimo = 0 - (2 ** (numero di bit - 1))
  • Valore massimo = (2 ** (numero di bit - 1)) - 1

Quindi, per Int32:

Min value = 0 - (2 ** (32 - 1))
          = 0 - (2 ** 31)
          = 0 - 2147483648
          = -2147483648

Max value = (2 ** (32 - 1)) - 1
          = (2 ** 31) - 1
          = 2147483648 - 1
          = 2147483647

Altri suggerimenti

Io sto usando un 32bit firmati intero in questo esempio. 31 bit sono utilizzati per la creazione di valore 2 ^ 31 possibilità. Come pari a zero deve essere compreso, si deve sottrarre uno.

2^31-1

Quando negativo, pari a zero non deve essere inclusa, in tal modo si ottiene la gamma completa.

-2^31

In caso di un numero intero senza segno, il massimo è semplicemente 2^32-1, e il min 0.

Hai bisogno di sapere quanti bit il tipo è e se è firmato o meno.

Per esempio, un int è di 32-bit in C # ed è firmato. Questo significa che ci sono 31 bit per rappresentare il numero (1 bit viene utilizzato per determinare negativo o postive). Così si avrebbe calcolare 2 31 e sottrarre uno che è 2147483647, (che è quello che ritorna Integer.MaxValue).

Analogamente un byte è di 8 bit e non firmato così il valore massimo è 2 8 -1 o 255.

Un esempio per la risposta domanda
int firmato:

Min=(1 << ((sizeof(int) * 8) - 1));
Max=~(1 << ((sizeof(int) * 8) - 1));

anche

Min=~(int)((~((uint)0))>>1);
Max=(int)((~((uint)0))>>1);

unsigned int:

Min=0;
Max=~((uint)0);

Il valore Min / Max di una variabile intera deriva dalla quantità di bit utilizzato (di solito alla potenza di 2, cioè 2bits, 4bits, 8bits). Un int in C # utilizza 32 bit, e come tale può avere un valore MAX di 4,294,967,295 - in quanto questo è il valore massimo 32 bit di dati possono rappresentare -. Come è la mia comprensione, comunque

Se la calcolatrice dispone di una conversione da decimale a binario (dicembre-to-esadecimale sarebbe anche il lavoro), provare a convertire Int32.MaxValue e vedere se si macchia il modello ...

Credo che troverete questo utile:
Integer (Computer Science) @ Wikipedia

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top