Intel -processorer "stöder" inte i sig datatyper på det sätt som ett programmeringsspråk gör. Processorn arbetar med bitar; Programmeringsspråket och kompilatorn bestämmer hur dessa bitar tolkas som olika datatyper. Processorns arkitektur * påverkar emellertid * vilka datatyper som hanteras effektivt.
Antalet bitar som används för att representera en datatyp beror på instruktionsuppsättningsarkitekturen (ISA)-främst x86-64 i moderna Intel-processorer-och den specifika kompilatorn och programmeringsspråket. Det finns inget enda definitivt svar, eftersom det kan variera något beroende på kompilatoroptimeringar och detaljer om operativsystem.
Här är en allmän översikt över vanliga datatyper och deras typiska storlekar i bitar på x86-64 arkitekturer (som de som används av de flesta Intel-kärnprocessorer):
* heltal:
* `Char`:Vanligtvis 8 bitar (signerad eller osignerad)
* `Kort":Vanligtvis 16 bitar (signerad eller osignerad)
* `Int`:Vanligtvis 32 bitar (signerad eller osignerad)
* `Long ':Vanligtvis 64 bitar (signerad eller osignerad)
* `Lång lång":Vanligtvis 64 bitar (signerad eller osignerad)
* flytande punktnummer:
* `Float`:Vanligtvis 32 bitar (enstaka precision)
* `Dubbel`:Vanligtvis 64 bitar (dubbelprecision)
* `Long Double ':Vanligtvis 80 bitar (utökad precision, även om implementeringsdetaljer kan variera; ibland emulerade som 64 bitar)
* pekare:
* Pekare är minnesadresser. På en 64-bitars arkitektur som x86-64 är de vanligtvis 64 bitar långa.
* booleans:
* Storleken på en boolesk typ är kompilatorberoende, men ofta upptar den 1 byte (8 bitar) för effektivitet även om endast 1 bit är logiskt nödvändig.
Viktiga överväganden:
* kompilatorpåverkan: Kompilatorn spelar en avgörande roll för att bestämma storleken och representationen av datatyper. Olika kompilatorer (som GCC, Clang, MSVC) kan ha något olika standardvärden eller optimeringar, även om standarder (som C ++ och C -standarder) begränsar möjligheterna.
* Operativsystem: Operativsystemet spelar också en mindre roll, eftersom det kan påverka saker som minnesjustering.
* SIMD -instruktioner: Intel -processorer stöder SIMD (enstaka instruktioner, flera data) instruktioner som fungerar på data vektorer. Dessa kan fungera på flera dataelement samtidigt, avsevärt påskynda behandlingen av matriser och liknande datastrukturer. Storleken på dessa vektortyper definieras av de specifika SIMD-instruktionerna som används (t.ex. SSE, AVX, AVX-512). Dessa är inte direkt användarprogrammerbara datatyper på samma sätt som `int` eller` float 'är.
Sammanfattningsvis:Medan Intel-processorn i grunden hanterar bitar, dikteras representationen av datatyper i bitar av en kombination av arkitekturen (x86-64), programmeringsspråket, kompilatorn och ibland till och med operativsystemet. Tabellen ovan ger en allmän riktlinje, men konsultera din specifika kompilatordokumentation för exakta detaljer.