Articulo de referencia

Tipo de datos primitivo

En informática , los tipos de datos primitivos son conjuntos de tipos de datos básicos a partir de los cuales se construyen todos los demás tipos de datos. [ 1 ] Específicamente...

En informática , los tipos de datos primitivos son conjuntos de tipos de datos básicos a partir de los cuales se construyen todos los demás tipos de datos. [ 1 ] Específicamente, a menudo se refiere al conjunto limitado de representaciones de datos que utiliza un procesador en particular , que todos los programas compilados deben usar. La mayoría de los procesadores admiten un conjunto similar de tipos de datos primitivos, aunque las representaciones específicas varían. [ 2 ] De manera más general, los tipos de datos primitivos pueden referirse a los tipos de datos estándar integrados en un lenguaje de programación ( tipos integrados ). [ 3 ] [ 4 ] Los tipos de datos que no son primitivos se denominan derivados o compuestos . [ 3 ]

Los tipos primitivos son casi siempre tipos de valor , pero los tipos compuestos también pueden ser tipos de valor. [ 5 ]

Tipos de datos primitivos comunes

Los tipos primitivos más comunes son aquellos utilizados y compatibles con el hardware de la computadora, como los enteros de varios tamaños, los números de punto flotante y los valores lógicos booleanos . Las operaciones con estos tipos suelen ser bastante eficientes. Los tipos de datos primitivos nativos del procesador tienen una correspondencia uno a uno con los objetos en la memoria de la computadora, y las operaciones con estos tipos suelen ser las más rápidas posibles en la mayoría de los casos. [ 6 ] La suma de enteros, por ejemplo, se puede realizar como una sola instrucción de máquina, y algunas ofrecen instrucciones específicas para procesar secuencias de caracteres con una sola instrucción . [ 7 ] Pero la elección del tipo de dato primitivo puede afectar el rendimiento; por ejemplo, es más rápido usar operaciones y tipos de datos SIMD para operar con una matriz de números de punto flotante. [ 6 ] : 113

Números enteros

Un tipo de dato entero representa un rango de números enteros matemáticos. Los enteros pueden ser con signo (permitiendo valores negativos) o sin signo ( solo enteros no negativos ). Los rangos comunes son:

Números de punto flotante

Un número de punto flotante representa un número racional de precisión limitada que puede tener una parte fraccionaria. Estos números se almacenan internamente en un formato equivalente a la notación científica , normalmente en binario , pero a veces en decimal . Debido a que los números de punto flotante tienen precisión limitada, solo un subconjunto de números reales o racionales se pueden representar con exactitud; otros números solo se pueden representar de forma aproximada. Muchos lenguajes tienen un tipo de precisión simple (a menudo llamado float ) y un tipo de precisión doble (a menudo llamado double ).

Booleanos

Un tipo booleano , generalmente denotado como bool o boolean , es un tipo lógico que puede tener el valor verdadero o falso . Aunque solo se necesita un bit para representar los valores verdadero y falso , los lenguajes de programación suelen implementar los tipos booleanos como uno o más bytes.

Muchos lenguajes (por ejemplo, Java , Pascal y Ada ) implementan booleanos adhiriéndose al concepto de booleano como un tipo lógico distinto. Sin embargo, algunos lenguajes pueden convertir implícitamente los booleanos a tipos numéricos en ocasiones para brindar una semántica extendida a los booleanos y expresiones booleanas o para lograr compatibilidad con versiones anteriores del lenguaje. Por ejemplo, las primeras versiones del lenguaje de programación C que seguían ANSI C y sus estándares anteriores no tenían un tipo booleano dedicado. En cambio, los valores numéricos de cero se interpretan como falsos y cualquier otro valor se interpreta como verdadero . [ 9 ] El nuevo C99 agregó un tipo booleano distinto _Bool(posteriormente movido a boolasí como las palabras clave truey falsecon C23 ), [ 10 ] y C++ admite boolcomo un tipo integrado y verdadero y falso como palabras reservadas. [ 11 ]

Lenguas específicas

Tipos básicos de C y C++

En C y C++ , hay como mínimo cuatro tipos, char, int, float, y double, pero los calificadores short, long, signed, y unsignedsignifican que C contiene numerosos tipos primitivos de enteros y de punto flotante dependientes del destino. [ 12 ] C99 permitió que el modificador longse usara dos veces en combinación con int(por ejemplo long long int). [ 13 ] De manera similar, signedy unsignedse pueden usar como modificadores para tipos enteros. C23 introdujo el booltipo como un tipo de datos central, mientras que siempre fue un tipo de datos central de C++. C++ también presenta un std::bytetipo (similar a Java).

C y C++ también contienen size_t, intptr_ty otros tipos enteros, para cosas como indexar matrices y colecciones. Estos no son tipos de datos distintos, sino que a menudo son alias y están definidos por el sistema. Estos son quizás similares a Rust usizey isize.

Java

Los tipos básicos de Java son similares a los de C. El conjunto de tipos de datos primitivos de la máquina virtual de Java consta de: [ 14 ]

  • byte, short, int, long, char( tipos enteros con una variedad de rangos)
  • floaty números de punto flotante con precisión simple y doble double.
  • boolean, un tipo booleano con valores lógicos trueyfalse
  • returnAddress, un valor que hace referencia a una dirección de memoria ejecutable. Esto no es accesible desde el lenguaje de programación Java y generalmente se omite. [ 15 ] [ 16 ]

Esquema XML

El lenguaje de definición de esquema XML proporciona un conjunto de 19 tipos de datos primitivos: [ 17 ]

  • string: una cadena , una secuencia de puntos de código Unicode
  • boolean: un booleano
  • decimal: un número representado con notación decimal
  • floaty double: números de punto flotante
  • duration, dateTime, time, date, gYearMonth, gYear, gMonthDay, gDay, y gMonth: Fechas y horas del calendario
  • hexBinaryy base64Binary: datos binarios codificados como hexadecimal o Base64
  • anyURI: una URI
  • QName: un nombre calificado
  • NOTATION: un QName declarado como una notación en el esquema. Las notaciones se utilizan para incrustar tipos de datos que no son XML. [ 18 ] Este tipo no se puede usar directamente; solo se pueden usar tipos derivados que enumeren un conjunto limitado de QNames.

JavaScript

En JavaScript, existen 7 tipos de datos primitivos: cadena, número, entero grande, booleano, símbolo, indefinido y nulo. [ 19 ] Sus valores se consideran inmutables . Estos no son objetos y no tienen métodos ni propiedades ; sin embargo, todos los tipos primitivos, excepto indefinido y nulo, tienen envoltorios de objetos . [ 20 ]

Visual Basic .NET

En Visual Basic .NET , los tipos de datos primitivos constan de 4 tipos enteros, 2 tipos de punto flotante, un tipo decimal de 16 bytes, un tipo booleano, un tipo de fecha/hora, un tipo de carácter Unicode y un tipo de cadena Unicode. [ 21 ]

Óxido

Rust tiene enteros primitivos sin signo y con signo de ancho fijo en el formato uo irespectivamente seguidos de cualquier ancho de bits que sea una potencia de dos entre 8y 128dando los tipos u8, u16, u32, u64, u128, i8, i16, i32, i64y i128. [ 22 ] También están disponibles los tipos usizey isizeque son enteros sin signo y con signo que tienen el mismo ancho de bits que una referencia, siendo el usizetipo utilizado para índices en arreglos y tipos de colecciones indexables. [ 22 ]

Rust también tiene:

  • boolpara el tipo booleano . [ 22 ]
  • f32y para números de punto flotantef64 de 32 y 64 bits . [ 22 ]
  • charpara un carácter Unicode . Internamente, estos son enteros sin signo de 32 bits con valores que corresponden al charpunto de código de , pero solo son válidos los valores que corresponden a un valor escalar Unicode válido. [ 22 ]

Tipos integrados

Los tipos integrados se distinguen de otros por tener soporte específico en el compilador o en el entorno de ejecución, hasta el punto de que no sería posible definirlos simplemente en un archivo de cabecera o en un módulo de la biblioteca estándar. [ 23 ] Además de los enteros, los números de coma flotante y los booleanos, otros tipos integrados incluyen:

Caracteres y cadenas

Un tipo de carácter es un tipo que puede representar todos los caracteres Unicode , por lo que debe tener al menos 21 bits de ancho. Algunos lenguajes, como Julia, incluyen un tipo de carácter Unicode de 32 bits como primitivo. [ 24 ] Otros lenguajes, como JavaScript , Python , Ruby y muchos dialectos de BASIC, no tienen un tipo de carácter primitivo, sino que añaden cadenas como tipo de dato primitivo, normalmente utilizando la codificación UTF-8 . Las cadenas con una longitud de uno se utilizan normalmente para representar caracteres individuales.

Algunos lenguajes tienen tipos de caracteres demasiado pequeños para representar todos los caracteres Unicode. Estos se clasifican más apropiadamente como tipos enteros a los que se les ha dado un nombre engañoso. Por ejemplo, C incluye un chartipo, pero se define como la unidad de memoria direccionable más pequeña, que varios estándares (como POSIX ) requieren que sea de 8 bits . Las versiones recientes de estos estándares se refieren a charcomo un tipo numérico. chartambién se usa para un tipo entero de 16 bits en Java , pero nuevamente este no es un tipo de carácter Unicode. [ 25 ]

El término cadena no siempre se refiere a una secuencia de caracteres Unicode, sino a una secuencia de bytes. Por ejemplo, la arquitectura x86-64 tiene instrucciones de cadena para mover, establecer, buscar o comparar una secuencia de elementos, donde un elemento puede tener 1, 2, 4 u 8 bytes de longitud. [ 26 ]

Véase también

Referencias

  1. Stone, RG; Cooke, DJ (5 de febrero de 1987). Construcción de programas . Cambridge University Press. pág.  18. ISBN 978-0-521-31883-9.
  2. Wikander, Jan; Svensson, Bertil (31 de mayo de 1998). Sistemas en tiempo real en aplicaciones mecatrónicas . Springer Science & Business Media. pág. 101. ISBN  978-0-7923-8159-4.
  3. 1 2 Khurana, Rohit. Estructura de datos y archivos (para GTU), 2.ª edición . Vikas Publishing House. pág. 2. ISBN  978-93-259-6005-3.
  4. Chun, Wesley (2001). Core Python Programming . Prentice Hall Professional. p. 77. ISBN  978-0-13-026036-9.
  5. Olsen, Geir; Allison, Damon; Speer, James (1 de enero de 2008). Visual Basic .NET Class Design Handbook: Coding Effective Classes . Apress. pág. 80. ISBN  978-1-4302-0780-1.
  6. 1 2 Fog, Agner. "Optimización de software en C++" (PDF) . pág. 29. Consultado el 28 de enero de 2022. Las operaciones con enteros son rápidas en la mayoría de los casos, [...] 
  7. Hennessy, John L.; Patterson, David A. (agosto de 2011). Arquitectura de computadoras, quinta edición: un enfoque cuantitativo (5.ª ed.). San Francisco, CA, EE. UU.: Morgan Kaufmann Publishers Inc. ISBN  978-0-12-383872-8.
  8. 1 2 Fog, Agner (2010-02-16). "Convenciones de llamada para diferentes compiladores y sistemas operativos de C++: Capítulo 3, Representación de datos" (PDF) . Recuperado el 2010-08-30 .
  9. Kernighan, Brian W .; Ritchie, Dennis M. (1978). El lenguaje de programación C (1.ª ed.). Englewood Cliffs, NJ : Prentice Hall . pág . 41. ISBN   0-13-110163-3.
  10. "Biblioteca de soporte de tipos booleanos" . devdocs.io . Consultado el 15 de octubre de 2020 .
  11. "Tipo de dato booleano en C++" . GeeksforGeeks . 5 de junio de 2017. Consultado el 15 de octubre de 2020 .
  12. Kernighan, Brian W.; Ritchie, Dennis M. (1988). "2.2 Tipos y tamaños de datos". El lenguaje de programación C (Segunda edición). Englewood Cliffs, NJ, pág. 36. ISBN   0131103709.{{cite book}}: CS1 mantenimiento: falta el editor de ubicación ( enlace )
  13. Especificación ISO/IEC 9899:1999, TC3 (PDF) . pág. 255, § 6.2.5 Tipos .
  14. Lindholm, Tim; Yellin, Frank; Bracha, Gilad; Buckley, Alex (13 de febrero de 2015). "Capítulo 2. La estructura de la máquina virtual Java". La especificación de la máquina virtual Java® .
  15. Cowell, John (18 de febrero de 1997). Essential Java Fast: Cómo escribir software orientado a objetos para Internet . Springer Science & Business Media. pág. 27. ISBN  978-3-540-76052-8.
  16. Rakshit, Sandip; Panigrahi, Goutam (diciembre de 1995). Manual de programación orientada a objetos con Java . S. Chand Publishing. pág. 11. ISBN  978-81-219-3001-7.
  17. Biron, Paul V.; Malhotra, Ashok. "Esquema XML Parte 2: Tipos de datos" . www.w3.org (Segunda edición) . Consultado el 29 de enero de 2022 . 
  18. Phillips, Lee Anne (18 de enero de 2002). "Declaración de una NOTACIÓN | Comprensión de las definiciones de tipos de documentos XML" . www.informit.com . Consultado el 29 de enero de 2022 .
  19. "Primitivo - Glosario de MDN Web Docs: Definiciones de términos relacionados con la web" . MDN. 8 de junio de 2023.
  20. "Tipos de datos y estructuras de datos de JavaScript" . MDN. 9 de julio de 2024.
  21. "Tipos en Visual Basic" . Microsoft Docs . 18 de septiembre de 2021. Consultado el 18 de mayo de 2022 .
  22. 1 2 3 4 5 "Tipos de datos - El lenguaje de programación Rust" . doc.rust-lang.org . Consultado el 17 de octubre de 2023 .
  23. "Tipos integrados (C++)" . learn.microsoft.com . 17 de agosto de 2021.
  24. "Cadenas · El lenguaje Julia" . docs.julialang.org . Consultado el 29 de enero de 2022 .
  25. Mansoor, Umer (8 de mayo de 2016). "El tipo char en Java está roto" . CodeAhoy . Recuperado el 10 de febrero de 2020 .
  26. "Instrucciones de E/S y de cadena" . Consultado el 29 de enero de 2022 .
  • Logotipo de Wikimedia CommonsContenido multimedia relacionado con tipos primitivos en Wikimedia Commons
  • Diferencias entre tipos primitivos y objetos
Obtenido de " https://en.wikipedia.org/w/index.php?title=Primitive_data_type&oldid=1338409336 "