Integer (informatica)

Diverse CPU supportano diversi tipi di dati integrali. In genere, l’hardware supporta sia i tipi firmati che quelli non firmati, ma solo un piccolo set fisso di larghezze.

La tabella sopra elenca le larghezze di tipo integrale supportate nell’hardware dai processori comuni. I linguaggi di programmazione di alto livello offrono più possibilità. È comune avere un tipo integrale “double width” che ha il doppio dei bit del più grande tipo supportato dall’hardware., Molte lingue hanno anche tipi di campo di bit (un numero specificato di bit, solitamente vincolato a essere inferiore alla larghezza massima supportata dall’hardware) e tipi di intervallo (che possono rappresentare solo gli interi in un intervallo specificato).

Alcuni linguaggi, come Lisp, Smalltalk, REXX, Haskell, Python e Raku supportano interi di precisione arbitraria (noti anche come interi di precisione infinita o bignum)., Altri linguaggi che non supportano questo concetto come costrutto di primo livello possono avere librerie disponibili per rappresentare numeri molto grandi usando array di variabili più piccole, come la classe BigInteger di Java o il pacchetto “bigint” di Perl. Questi usano la quantità di memoria del computer necessaria per memorizzare i numeri; tuttavia, un computer ha solo una quantità finita di memoria, quindi anche loro possono rappresentare solo un sottoinsieme finito degli interi matematici. Questi schemi supportano numeri molto grandi, ad esempio un kilobyte di memoria potrebbe essere utilizzato per memorizzare numeri lunghi fino a 2466 cifre decimali.,

Un tipo booleano o Flag è un tipo che può rappresentare solo due valori: 0 e 1, solitamente identificati rispettivamente con false e true. Questo tipo può essere memorizzato in memoria usando un singolo bit, ma spesso viene dato un byte completo per comodità di indirizzamento e velocità di accesso.

Una quantità di quattro bit è nota come un bocconcino (quando si mangia, essendo più piccolo di un morso) o nibble (essendo un gioco di parole sulla forma della parola byte). Un bocconcino corrisponde a una cifra in esadecimale e contiene una cifra o un codice di segno in decimale con codice binario.,

Byte e ottettimodifica

Articoli principali: Byte e ottetto (calcolo)

Il termine byte inizialmente significava ‘la più piccola unità di memoria indirizzabile’. Nel passato, 5-, 6-, 7-, 8-, e i byte a 9 bit sono stati tutti usati. Ci sono stati anche computer in grado di indirizzare singoli bit (“macchina indirizzata a bit”) o che potevano indirizzare solo quantità a 16 o 32 bit (“macchina indirizzata a parole”). Il termine byte di solito non veniva usato affatto in connessione con macchine indirizzate a bit e parole.

Il termine ottetto si riferisce sempre a una quantità di 8 bit., Viene utilizzato principalmente nel campo delle reti di computer, dove i computer con larghezze di byte diverse potrebbero dover comunicare.

Nell’uso moderno byte significa quasi invariabilmente otto bit, poiché tutte le altre dimensioni sono cadute in disuso; quindi byte è diventato sinonimo di ottetto.

WordsEdit

Articolo principale: Word (computer architecture)

Praticamente tutti i nuovi processori desktop sono in grado di utilizzare parole a 64 bit, sebbene i processori embedded con dimensioni di parole a 8 e 16 bit siano ancora comuni. La lunghezza delle parole a 36 bit era comune nei primi giorni dei computer.,

Una causa importante della non portabilità del software è l’errata ipotesi che tutti i computer abbiano la stessa dimensione della parola del computer utilizzato dal programmatore. Ad esempio, se un programmatore che utilizza il linguaggio C dichiara erroneamente come int una variabile che verrà utilizzata per memorizzare valori superiori a 215-1, il programma fallirà su computer con numeri interi a 16 bit. Quella variabile avrebbe dovuto essere dichiarata lunga, che ha almeno 32 bit su qualsiasi computer., I programmatori possono anche erroneamente presumere che un puntatore possa essere convertito in un numero intero senza perdita di informazioni, che può funzionare su (alcuni) computer a 32 bit, ma fallire su computer a 64 bit con puntatori a 64 bit e interi a 32 bit. Questo problema è stato risolto da C99 in stdint.h sotto forma diintptr_t .

Breve integerEdit

Un intero breve può rappresentare un numero intero che può richiedere meno spazio di archiviazione, pur avendo un intervallo più piccolo, rispetto a un intero standard sulla stessa macchina.

In C, è indicato da breve., È necessario avere almeno 16 bit ed è spesso più piccolo di un intero standard, ma questo non è richiesto. Un programma conforme può presumere di poter memorizzare in modo sicuro valori tra −(215-1) e 215-1, ma potrebbe non presumere che l’intervallo non sia più grande. In Java, uno short è sempre un numero intero a 16 bit. Nell’API di Windows, il tipo di dati BREVE è definito come un intero con segno a 16 bit su tutte le macchine.,>−32,768

+32,767 ushort unsigned 2 0 65,535 Java short signed 2 −32,768 +32,767

Long integerEdit

A long integer can represent a whole integer whose range is greater than or equal to that of a standard integer on the same machine.,

In C, è indicato da long. È necessario essere almeno 32 bit e può essere o non essere più grande di un intero standard. Un programma conforme può presumere di poter memorizzare in modo sicuro valori tra −(231-1) e 231-1, ma potrebbe non presumere che l’intervallo non sia più grande.

Long longEdit

“long long” reindirizza qui. Non deve essere confuso con lungo o Lungo, Lungo, Lungo.,

Nella versione C99 del linguaggio di programmazione C e nella versione C++11 di C++, è supportato un tipo long long che ha il doppio della capacità minima dello standard long. Questo tipo non è supportato dai compilatori che richiedono che il codice C sia conforme allo standard C++ precedente, C++03, perché il tipo long long non esisteva in C++03. Per un compilatore conforme ANSI / ISO, devono essere soddisfatti i requisiti minimi per gli intervalli specificati, ovvero da −(263-1) a 263-1 per signed e da 0 a 264-1 per unsigned; tuttavia, è consentito estendere questo intervallo., Questo può essere un problema quando si scambiano codice e dati tra piattaforme o si esegue l’accesso diretto all’hardware. Pertanto, esistono diversi set di intestazioni che forniscono tipi di larghezza esatta indipendenti dalla piattaforma. La libreria standard C fornisce stdint.h; questo è stato introdotto in C99 e C++11.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *