Primitiver Datentyp
Im Informatik, Primitive Datentypen sind eine Reihe von Basic Datentypen aus denen alle anderen Datentypen konstruiert sind.[1] Insbesondere bezieht es sich häufig auf den begrenzten Satz von Datendarstellungen, die von einem bestimmten verwendet werden Prozessor, die alle kompilierten Programme verwenden müssen. Die meisten Prozessoren unterstützen einen ähnlichen Satz primitiver Datentypen, obwohl die spezifischen Darstellungen variieren.[2] Im Allgemeinen können "primitive Datentypen" auf die in ein integrierten Standarddatentypen verweisen Programmiersprache.[3][4] Datentypen, die nicht primitiv sind abgeleitet oder zusammengesetzt.[3]
Primitive Typen sind fast immer Werttypen, aber zusammengesetzte Typen können auch Werttypen sein.[5]
Gemeinsame primitive Datentypen
Das Java Primitive Datentypen der virtuellen Maschine sind:[6]
- Ganze Zahl Typen mit einer Vielzahl von Bereichen und Präzisionen (
Byte
,kurz
,int
,lang
,verkohlen
) - Schwimmpunktzahl mit Single oder Doppel Präzisionen; (
schweben
,doppelt
) - Boolesche, logische Werte Stimmt und FALSCH. (
Boolesche
) - Ein Wert, der sich auf eine ausführbare Speicheradresse bezieht. (
Absender
) Dies ist nicht über die Java -Programmiersprache zugänglich und wird normalerweise ausgelassen.[7][8]
Diese primitiven Typen sind im Allgemeinen genau diejenigen, die von Computerhardware unterstützt werden, außer möglicherweise für unterschiedliche Ganzzahlgrößen oder Hardware, die einen schwimmenden Punkt fehlen. Operationen zu solchen Primitiven sind normalerweise ziemlich effizient. Primitive Datentypen, die im Prozessor nativ sind, haben eine eins-zu-Eins-Korrespondenz mit Objekten im Speicher des Computers, und Operationen auf diesen Typen sind in den meisten Fällen häufig die schnellsten.[9] Die Integer -Addition kann beispielsweise als einzelne Maschinenanweisung durchgeführt werden, und einige bieten spezifische Anweisungen zur Verarbeitung von Zeichen von Zeichen mit einer einzelnen Anweisung.[10] Die Auswahl des primitiven Datentyps kann jedoch die Leistung beeinflussen, beispielsweise wird er schneller verwendet Simd Operationen und Datentypen für eine Reihe von Schwimmern.[9]: 113
Der Satz von Basic C Datentypen ist ähnlich wie Javas. Minimal gibt es vier Arten, verkohlen
, int
, schweben
, und doppelt
, aber die Qualifikation kurz
, lang
, unterzeichnet
, und ohne Vorzeichen
Mittelwert, dass C zahlreiche zielabhängige Ganzzahl- und Gleitkomma-Primitivtypen enthält.[11]
Ganzzahlzahlen
Ein ganze Zahl Datentyp repräsentiert einige Bereich der mathematischen Ganzzahlen. Ganzzahlen können entweder signiert sein (negative Werte zulassen) oder nicht signiert (Nicht negative Ganzzahlen nur). Gemeinsame Bereiche sind:
Größe (Bytes)) | Größe (Bits)) | Namen | Unterzeichnet Angebot (Zwei ergänzt Darstellung) | Nicht signierter Reichweite |
---|---|---|---|---|
1 Byte | 8 Bit | Byte, OktettMindestgröße von verkohlen in C99( sehen Limits.h Char_bit) | –128 bis +127 | 0 bis 255 |
2 Bytes | 16 Bit | x86 WortMindestgröße von kurz und int in c | –32,768 bis +32.767 | 0 bis 65.535 |
4 Bytes | 32 Bit | x86 Doppelwort, Mindestgröße von lang In C tatsächliche Größe von int Für die meisten modernen C -Compiler,[12] Zeiger zum IA-32-kompatible Prozessoren | –2,147,483.648 bis +2,147.483.647 | 0 bis 4,294.967.295 |
8 Bytes | 64 Bit | x86 Vierfachwort, minimale Größe von lang Lang In C tatsächliche Größe von lang Für die meisten modernen C -Compiler,[12] Zeiger für x86-64-kompatible Prozessoren | –9,223.372.036.854.775.808 bis +9.223.372.036.854.775.807 | 0 bis 18.446.744.073.709.551.615 |
Gleitkommazahlen
A Schwimmpunkt Zahl ist eine begrenzte Präzision Rationale Zahl Das kann einen Bruchteil haben. Diese Zahlen werden intern in einem Format gespeichert wissenschaftliche Schreibweise, normalerweise in binär Aber manchmal in Dezimal. Weil Gleitkomma-Zahlen nur eine begrenzte Präzision aufweisen, nur eine Teilmenge von real oder rational Zahlen sind genau dargestellt; Andere Zahlen können nur ungefähr dargestellt werden. Viele Sprachen haben beide a mit einfacher Genauigkeit (oft als "float" genannt) und a Doppelte Genauigkeit Typ (oft als "doppelt" bezeichnet).
Booleschen
A Boolesche Typ, normalerweise bezeichnet "bool" oder "boolean", ist normalerweise a logischer Typ Das kann entweder den Wert "wahr" oder den Wert "falsch" haben. Obwohl nur ein Bit erforderlich ist, um den Wert "true" und "false" zu berücksichtigen, implementieren Programmiersprachen normalerweise Boolesche Typen als einen oder mehrere Bytes.
Viele Sprachen (z. Java, Pascal und Ada) Implementieren Sie Booleane, die sich an das Konzept von festhalten Boolesche als eindeutiger logischer Typ. Einige Sprachen können jedoch implizit Booleschen zu konvertieren Numerische Typen Manchmal, um die booleans und booleschen Ausdrücke eine erweiterte Semantik zu verleihen oder mit früheren Sprachversionen rückwärtskompatibilität zu erreichen. Zum Beispiel frühe Versionen der folgenden C -Programmiersprache Ansi c und seine früheren Standards hatten keinen engagierten Booleschen Typ. Stattdessen werden numerische Werte von Null als "falsch" interpretiert und jeder andere Wert als "wahr" interpretiert.[13] Desto neuer C99 fügte einen ausgeprägten Booleschen Typ hinzu, der mit enthalten sein kann stdbool.h,[14] und C ++ Unterstützung bool
als eingebaute Typ und "wahr" und "falsch" als reservierte Wörter.[15]
XML -Schema
Das XML -Schema -Definition Die Sprache bietet einen Satz von 19 primitiven Datentypen:[16]
-
Saite
: a Saiteeine Sequenz von Unicode -Codepunkte -
Boolesche
: a Boolesche -
Dezimal
: Eine Zahl mit dargestellt mit Dezimal Notation -
schweben
unddoppelt
: Schwimmpunkt Zahlen -
Dauer
,Terminzeit
,Zeit
,Datum
,Gyearmonton
,Gyear
,gonaThday
,Tag auch
, undGonton
: Kalenderdaten und Zeiten -
sechs Bebär
undBase64Binary
: Binärdaten codiert als hexadezimal oder Basis64 -
Anyuri
: a Uri -
Qname
: a qualifizierter Name -
NOTATION
: Ein Qname als Notation im Schema. Notationen werden verwendet, um Nicht-XML-Datentypen einzubetten.[17] Dieser Typ kann nicht direkt verwendet werden - nur abgeleitete Typen, die einen begrenzten Satz von QNames aufzählen, kann verwendet werden.
Eingebaute Typen
In JavaScript gibt es 7 primitive Datentypen: String, Anzahl, Bigint, Boolesche, undefinierte Symbol und Null. Dies sind keine Objekte und haben keine Methoden.[18]
Im Visual Basic .netDie primitiven Datentypen bestehen aus 4 Integraltypen, 2 Gleitkomma-Typen, einem 16-Byte-Dezimalart, einem Booleschen Typ, einem Datum/Zeit-Typ, einem Unicode-Zeichentyp und einem Unicode-String-Typ.[19]
Im Allgemeinen umfassen Datentypen, die in ausgefeilte Programmiersprachen integriert werden können,::
- Charaktere und Saiten (siehe unter)
- Bereiche (siehe unter)
- Tupel in Standard ml, Python, Scala, Schnell, Elixier
- Aufführen in Common Lisp, Python, Planen, Haskell
- Festpunktnummer mit einer Vielzahl von einer Vielzahl von Präzisionen und ein Programmierer ausgewählt Skala.
- Komplexe Zahl in C99, Forran, Common Lisp, Python, D, gehen. Dies sind zwei schwimmende Punktzahlen, ein echter Teil und ein imaginärer Teil.
- Rationale Zahl in Common Lisp
- Willkürliche Präzision
Ganze Zahl
eintippen Common Lisp, Erlang, Haskell - Assoziatives Array in Perl, Php, Python, Rubin, JavaScript, Lua, D, gehen
- Bezug (auch a genannt Zeiger oder handhaben oder Deskriptor),
- Erstklassige Funktion, insgesamt funktional Sprachen, JavaScript, Lua, D, gehenund in neueren Maßstäben von C ++, Java, C#, Perl
Charaktere und Saiten
A Charakter Typ ist ein Typ, der alle darstellen kann Unicode -Zeichen, daher muss mindestens 21 Bit breit sein. Einige Sprachen wie Julia enthalten einen echten 32-Bit-Unicode-Charaktertyp als primitiv.[20] Andere Sprachen wie z. JavaScript, Python, Rubinund viele Dialekte von BASIC Haben Sie keinen primitiven Zeichentyp, sondern fügen Sie stattdessen hinzu Saiten als primitiver Datentyp, typischerweise mit dem UTF-8 Codierung. Saiten mit einer Länge von einer werden normalerweise zur Darstellung einzelner Zeichen verwendet.
Einige Sprachen haben "Zeichen" oder "String" -Typen, die zu klein sind, um alle Unicode -Zeichen oder -ketten darzustellen. Diese werden besser als Ganzzahltypen eingestuft. Zum Beispiel c enthält c a verkohlen
Geben Posix muss 8 sein Bits. Die jüngste Version dieser Standards bezieht sich auf verkohlen
als numerischer Typ. verkohlen
wird auch für einen 16-Bit-Ganzzahl-Typ in verwendet JavaAber auch hier ist dies kein Unicode -Zeichentyp.[21] Einige Computerhardware haben einige Anweisungen, die sich mit "Zeichenfolgen" befassen, die sich auf eine Abfolge von Bytes beziehen. Zum Beispiel kann X86-64 eine Abfolge von Elementen bewegen, setzen, suchen oder vergleichen, wobei ein Element 1, 2, 4 oder 8 Bytes lang sein kann.[22]
Bereiche
A Angebot Der numerische Datentyp hat seinen maximalen und minimalen Wert in den Typ eingebettet. Es ist in einigen Sprachen enthalten, z. Ada und Pascal. Der Versuch, eine Zahl außerhalb des Bereichs zu speichern Kürzung) Abhängig von der verwendeten Sprache. In der Praxis wählt der Compiler den am besten geeigneten primitiven Ganzzahl oder den Floating-Punkt-Typ automatisch.
Siehe auch
- Sprache primitiv
- Liste der Datenstrukturen § Datentypen
- Objekttyp
- Primitive Wrapper -Klasse
- Variable (Informatik)
Verweise
- ^ Stone, R. G.; Cooke, D. J. (5. Februar 1987). Programmkonstruktion. Cambridge University Press. p. 18. ISBN 978-0-521-31883-9.
- ^ Wikander, Jan; Svensson, Bertil (31. Mai 1998). Echtzeitsysteme in mechatronischen Anwendungen. Springer Science & Business Media. p. 101. ISBN 978-0-7923-8159-4.
- ^ a b Khurana, Rohit. Daten- und Dateistruktur (für GTU), 2. Auflage. Vikas Publishing House. p. 2. ISBN 978-93-259-6005-3.
- ^ Chun, Wesley (2001). Kernpython -Programmierung. Prentice Hall Professional. p. 77. ISBN 978-0-13-026036-9.
- ^ Olsen, Geir; Allison, Damon; Speer, James (1. Januar 2008). Visual Basic .NET -Klasse Design Handbuch: Codieren effektiver Klassen. Apress. p. 80. ISBN 978-1-4302-0780-1.
- ^ Lindholm, Tim; Schreien, Frank; Bracha, Gilad; Buckley, Alex (13. Februar 2015). "Kapitel 2. Die Struktur der virtuellen Java -Maschine". Die Spezifikation der java® virtuellen Maschine.
- ^ Cowell, John (18. Februar 1997). Essential Java schnell: Wie schreibe ich objektorientierte Software für das Internet. Springer Science & Business Media. p. 27. ISBN 978-3-540-76052-8.
- ^ Rakshit, Sandip; Panigrahi, Goutam (Dezember 1995). Ein Handbuch mit objektorientiertem Programmieren mit Java. S. Chand Publishing. p. 11. ISBN 978-81-219-3001-7.
- ^ a b Nebel, Agner. "Software in C ++ optimieren" (PDF). p. 29. Abgerufen 28. Januar 2022.
Integer -Operationen sind in den meisten Fällen schnell, [...]
- ^ "Einzelne Anweisungen einzelne Daten - Ein Überblick | ScienceDirect -Themen".
- ^ Kernighan, Brian W.; Ritchie, Dennis M. (1988). "2.2 Datentypen und Größen". Die C -Programmiersprache (Zweite Ausgabe). Englewood Cliffs, N. J. p. 36. ISBN 0131103709.
- ^ a b Fog, Agner (2010-02-16). "Konventionen für verschiedene C ++ - Compiler und Betriebssysteme aufrufen: Kapitel 3, Datenrepräsentation" (PDF). Abgerufen 2010-08-30.
- ^ Kernighan, Brian W.; Ritchie, Dennis M. (1978). Die C -Programmiersprache (1. Aufl.). Englewood Cliffs, NJ: Prentice Hall. p.41. ISBN 0-13-110163-3.
- ^ "Boolesche Support -Bibliothek". devdocs.io. Abgerufen 15. Oktober, 2020.
- ^ "BOOL -Datentyp in C ++". Geeksforgeeks. 5. Juni 2017. Abgerufen 15. Oktober, 2020.
- ^ Biron, Paul V.; Malhotra, Ashok. "XML Schema Teil 2: DataTypes". www.w3.org (Zweite Ausgabe). Abgerufen 29. Januar 2022.
- ^ Phillips, Lee Anne (18. Januar 2002). "Deklarieren einer Notation | XML -Dokumenttypdefinitionen verstehen". www.informit.com. Abgerufen 29. Januar 2022.
- ^ "Primitive - MDN -Webdokumente Glossar: Definitionen von webbezogenen Begriffen". Entwickler.mozilla.org. Mdn.
- ^ "Typen in Visual Basic". Microsoft Docs. 18. September 2021. Abgerufen 18. Mai 2022.
- ^ "Saiten · Die Julia -Sprache". docs.julialang.org. Abgerufen 29. Januar 2022.
- ^ Mansoor, Umer (8. Mai 2016). "Der Char -Typ in Java ist kaputt". CODEAHOY. Abgerufen 10. Februar 2020.
- ^ "I/O- und String -Anweisungen". Abgerufen 29. Januar 2022.
Externe Links
-
Medien im Zusammenhang mit primitiven Typen bei Wikimedia Commons