le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Di solito la variabile di tipo int occupa 4 byte, 1 byte ha 8 bit e ogni bit ha due stati: 0 e 1, quindi la variabile di tipo int può rappresentare un totale di 2^32 stati (ovvero può rappresentare 2^8 valore dei dati).
Inizia alle 07:36
ulteriore comprensione
chiedere: Dai due video precedenti, possiamo sapere che l'intervallo di numeri interi positivi che può essere rappresentato dal tipo int è 1 ~ 2^31 - 1. Se confrontiamo questa logica con gli interi negativi, allora l'intervallo di numeri interi che può essere rappresentato per il tipo int non dovrebbe essere -2^31 + 1 ~ 2^31 -1? Poiché non è possibile ottenere il valore 2^31, perché è possibile ottenere -2^31?
risposta:In informatica, la rappresentazione dell'intero con segno più comunemente utilizzata èRappresentazione in complemento a due . Questo metodo non solo risolve il problema di rappresentare i numeri positivi e negativi, ma semplifica anche le operazioni di addizione e sottrazione binaria. Vediamo nel dettaglio questa rappresentazione:
1. Un numero positivo : La rappresentazione binaria dei numeri positivi è la stessa dei numeri senza segno. Ad esempio, la rappresentazione binaria a 3 cifre di 3 è 011.
2. numero negativo : La rappresentazione dei numeri negativi si ottiene attraverso il complemento dei numeri positivi. Il complemento a due di un numero negativo si calcola invertendo la rappresentazione binaria del valore assoluto del numero e aggiungendo 1. Per esempio:
① Negazione: prima invertire la rappresentazione binaria di 3, 011, in 100.
② Aggiungi 1: aggiungi 1 a 100 per ottenere 101, quindi la rappresentazione in complemento a due di -3 è 101.
Per una variabile intera a 32 bit, il bit più alto (chiamato anche bit di segno) rappresenta il segno, 0 rappresenta il positivo e 1 rappresenta il negativo. I restanti 31 bit vengono utilizzati per rappresentare valori numerici.Torniamo quindi alla domanda appena sollevata:
1. Intervallo positivo (incluso 0) : Il bit di segno è 0 e i restanti 31 bit possono rappresentare valori da 000…000 (31 0) a 011…111 (31 1). L'intervallo decimale corrispondente è compreso tra 0 e 2^31 - 1.
2. Intervallo negativo : Il bit di segno è 1 e i restanti 31 bit possono rappresentare valori da 100...000 (31 0) a 111...111 (31 1). Tra questi, il numero in complemento a due di 100...000 (31 zeri) rappresenta -2^31 e il valore decimale corrispondente è -2^31. Il numero in complemento a due di 111...111 (31 unità) rappresenta -1 e il valore decimale corrispondente è -1.
Intervallo di numeri positivi: 1 ~ 2^31 - 1; intervallo di numeri negativi: -1 ~ -2^31, il numero totale è ancora 2^32 stati diversi. Pertanto, in genere l'intervallo di valori dell'intero di tipo int è -2147483648 ~ 2147483647 (ovvero -2^31 ~ 2^31 - 1)
Quanti byte occupa 64 bit int La differenza tra i tipi interi int, long e long long
Quanti byte occupa int a 64 bit? [Intervista] Quanti byte occupa int?
La differenza tra macchine a 32 e 64 bit e il numero di byte occupati dai tipi di dati di base
Tipo intero del linguaggio C (incluso intervallo di valori e lunghezza)
Quanti byte occupa il tipo int?
Dimensioni dei dati di tipo int e tipo di puntatore in piattaforme diverse
Problema Java sizeof()
Le variabili di tipo Int in Python possono memorizzare numeri interi di qualsiasi dimensione
Riassumere:
- La dimensione del tipo di dati di C e C++ è influenzata dallo standard di compilazione, dal compilatore, dal numero di bit del sistema operativo, ecc.
- La dimensione del tipo di dati di Java e Python è determinata dalle specifiche del linguaggio o dall'implementazione dell'interprete e non è influenzata da fattori quali il compilatore e il numero di bit del sistema operativo.
- Il motivo principale di questa differenza di progettazione è che C e C++ sono linguaggi di programmazione di sistema che di solito necessitano di interagire direttamente con l'hardware, quindi la dimensione dei tipi di dati varierà a seconda dell'ambiente sottostante mentre Java e Python sono elevati; linguaggi di programmazione di livello con un livello di astrazione più elevato. L'obiettivo della progettazione è la coerenza multipiattaforma.