En informàtica, els tipus de dades primitius són un conjunt de tipus de dades bàsics a partir dels quals es construeixen tots els altres tipus de dades. Específicament, sovint es refereix al conjunt limitat de representacions de dades que utilitza un processador concret, que tots els programes compilats han d'utilitzar. La majoria dels processadors admeten un conjunt similar de tipus de dades primitius, tot i que les representacions específiques varien. Més generalment, els tipus de dades primitius poden referir-se als tipus de dades estàndard integrats en un llenguatge de programació (tipus integrats). Els tipus de dades que no són primitius s'anomenen derivats o compostos.

Els tipus primitius gairebé sempre són tipus de valor, però els tipus compostos també poden ser tipus de valor.

Tipus de dades primitives comunes Els tipus primitius més comuns són els que utilitza i admet el maquinari informàtic, com ara nombres enters de diverses mides, nombres de coma flotant i valors lògics booleans. Les operacions sobre aquests tipus solen ser força eficients. Els tipus de dades primitives que són nadius del processador tenen una correspondència biunívoca amb els objectes de la memòria de l'ordinador, i les operacions sobre aquests tipus solen ser les més ràpides possibles en la majoria dels casos. La suma d'enters, per exemple, es pot realitzar com una única instrucció màquina, i alguns ofereixen instruccions específiques per processar seqüències de caràcters amb una sola instrucció. Però l'elecció del tipus de dades primitiu pot afectar el rendiment, per exemple, és més ràpid utilitzar operacions SIMD i tipus de dades per operar sobre una matriu de floats.  

Nombres enters Un tipus de dades enter representa un interval d'enters matemàtics. Els enters poden tenir signe (permetent valors negatius) o sense signe (només enters no negatius). Els intervals habituals són: Mida (bytes)Mida (bits)NomsRang amb signe (representació en complement a dos)1 byte8 bitsByte, mida mínima del char a C99 (vegeu limits.h CHAR_BIT)−128 a +1272 bytes16 bitsParaula x86, mida mínima de short i int en C−32.768 a +32.7674 bytes32 bitsParaula doble x86, mida mínima de long en C, mida real d' int per a la majoria de compiladors C moderns, punter per a processadors compatibles amb IA-32−2.147.483.648 a +2.147.483.6478 bytes64 bitsParaula quàdruple x86, mida mínima de long long en C, mida real de long per a la majoria de compiladors C moderns, punter per a processadors compatibles amb x86-64−9.223.372.036.854.775.808 a +9.223.372.036.854.775.807

Nombres de coma flotant Un nombre de coma flotant representa un nombre racional de precisió limitada que pot tenir una part fraccionària. Aquests nombres s'emmagatzemen internament en un format equivalent a la notació científica, normalment en binari però de vegades en decimal. Com que els nombres de coma flotant tenen una precisió limitada, només un subconjunt de nombres reals o racionals és exactament representable; altres nombres només es poden representar aproximadament. Molts llenguatges tenen tant un tipus de simple precisió (sovint anomenada *float *) com un tipus de doble precisió (sovint anomenada *double* ).

Booleans Un tipus booleà, normalment denotat com a bool o boolean, és típicament un tipus lògic que pot tenir el valor true o el valor false. Tot i que només cal un bit per adaptar-se al conjunt de valors true i false, els llenguatges de programació solen implementar els tipus booleans com un o més bytes.

Molts llenguatges (per exemple, Java, Pascal i Ada) implementen booleans seguint el concepte de booleà com un tipus lògic diferent. Alguns llenguatges, però, poden convertir implícitament els booleans en tipus numèrics de vegades per donar una semàntica ampliada als booleans i a les expressions booleanes o per aconseguir compatibilitat amb versions anteriors del llenguatge. Per exemple, les primeres versions del llenguatge de programació C que seguien ANSI C i els seus estàndards anteriors no tenien un tipus booleà dedicat. En canvi, els valors numèrics de zero s'interpreten com a fals, i qualsevol altre valor s'interpreta com a cert. El C99 més nou va afegir un tipus booleà diferent _Bool (el nom més intuïtiu bool, així com les macros true i false es poden incloure amb stdbool.h), i C++ admet bool com a tipus integrat i true i false

Llenguatges específics Java El conjunt de tipus de dades primitives de la màquina virtual Java consisteix en:

byte, short, int, long, char (tipus enters amb diversos rangs) nombres de coma float i double, nombres de coma flotant amb precisions simples i dobles boolean, un tipus booleà amb valors lògics true i false returnAddress, un valor que fa referència a una adreça de memòria executable. Això no és accessible des del llenguatge de programació Java i normalment s'omet.

Tipus bàsics de C El conjunt de tipus de dades bàsics de C és similar al de Java. Mínimament, hi ha quatre tipus: char, int, float i double, però els qualificadors short, long, signed i unsigned signifiquen que C conté nombrosos tipus primitius enters i de coma flotant dependents de l'objectiu. C99 va ampliar aquest conjunt afegint el tipus booleà _Bool i permetent que el modificador long s'utilitzés dues vegades en combinació amb int (per exemple, long long int).

Esquema XML El llenguatge de definició d'esquemes XML proporciona un conjunt de 19 tipus de dades primitives:

string : una cadena, una seqüència de punts de codi Unicode boolean : un booleà decimal : un nombre representat amb notació decimal float i double : nombres de coma flotant duration, dateTime, time, date, gYearMonth, gYear, gMonthDay, gDay i gMonth : Dates i hores del calendari hexBinary i base64Binary : dades binàries codificades com a hexadecimal o Base64 anyURI : un URI QName : un nom qualificat NOTATION : un QName declarat com a notació a l'esquema. Les notacions s'utilitzen per incrustar tipus de dades que no són XML. Aquest tipus no es pot utilitzar directament; només es poden utilitzar tipus derivats que enumeren un conjunt limitat de QNames.

JavaScript En JavaScript, hi ha 7 tipus de dades primitives: string, number, bigint, boolean, symbol, undefined i null. Els seus valors es consideren immutables. Aquests no són objectes i no tenen mètodes ni propietats; tanmateix, totes les primitives excepte undefined i null tenen contenidors d'objectes.

Visual Basic.NET En Visual Basic.NET, els tipus de dades primitius consten de 4 tipus integrals, 2 tipus de coma flotant, un tipus decimal de 16 bytes, un tipus booleà, un tipus de data/hora, un tipus de caràcter Unicode i un tipus de cadena Unicode.

Rust Rust té enters primitius d'amplada fixa sense signe i amb signe en el format u o i respectivament seguits de qualsevol amplada de bit que sigui una potència de dos entre 8 i 128, donant els tipus u8, u16, u32, u64, u128, i8, i16, i32, i64 i i128. També hi ha disponibles els tipus usize i isize, que són enters sense signe i amb signe que tenen la mateixa amplada de bit que una referència, i el tipus usize s'utilitza per a índexs en matrius i tipus de col·lecció indexable.

Tipus integrats Els tipus integrats es distingeixen dels altres per tenir suport específic en el compilador o en temps d'execució, fins al punt que no seria possible definir-los simplement en un fitxer de capçalera o un mòdul de biblioteca estàndard. A més dels enters, els nombres de coma flotant i els booleans, altres tipus integrats inclouen:

El tipus void i el tipus de punter null nullptr_t en C++11 i C23 Caràcters i cadenes (vegeu més avall) Tupla en ML estàndard, Python, Scala, Swift, Elixir Llista en Common Lisp, Python, Scheme, Haskell Nombre de coma fixa amb diverses precisions i una escala seleccionada pel programador. Nombre complex en C99, Fortran, Common Lisp, Python, D, Go. Es tracta de dos nombres de coma flotant, una part real i una part imaginària. Seqüència de tipus enumerada de noms per als valors permesos; pot millorar la llegibilitat i la comprovació de tipus. Nombre racional en Common Lisp Tipus Integer de precisió arbitrària en Common Lisp, Erlang, Haskell Matrius, registres o conjunts associatius en Perl, PHP, Python, Ruby, JavaScript, Lua, D, Go Referència (també anomenada punter, identificador o descriptor), Símbols, en Lisp Funció de primera classe, en tots els llenguatges funcionals, JavaScript, Lua, D, Go i en els estàndards més nous de C++, Java, C#, Perl

Caràcters i cadenes Un tipus de caràcter és un tipus que pot representar tots els caràcters Unicode, per tant, ha de tenir almenys 21 bits d'amplada. Alguns llenguatges com Julia inclouen un veritable tipus de caràcter Unicode de 32 bits com a primitiu. Altres llenguatges com JavaScript, Python, Ruby i molts dialectes de BASIC no tenen un tipus de caràcter primitiu, sinó que afegeixen cadenes com a tipus de dades primitiu, normalment utilitzant la codificació UTF-8. Les cadenes amb una longitud d'un s'utilitzen normalment per representar caràcters individuals.

Referències

Categoria:Dades informàtiques