stringtranslate.com

Tipo de datos primitivo

En informática , los tipos de datos primitivos son un conjunto de tipos de datos básicos a partir del cual 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 casi siempre son 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 los utilizados y soportados por el hardware de la computadora, como números enteros de varios tamaños, números de punto flotante y valores lógicos booleanos . Las operaciones con estos tipos suelen ser bastante eficientes. Los tipos de datos primitivos que son nativos del procesador tienen una correspondencia uno a uno con los objetos en la memoria de la computadora, y las operaciones en 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 datos primitivo puede afectar el rendimiento; por ejemplo, es más rápido usar operaciones SIMD y tipos de datos para operar en una matriz de flotantes. [6] : 113 

números enteros

Un tipo de datos entero representa algún rango de números enteros matemáticos. Los números enteros pueden tener signo (permitiendo valores negativos) o sin signo ( sólo números 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 una precisión limitada, sólo un subconjunto de números reales o racionales es exactamente representable; otros números sólo se pueden representar de forma aproximada. Muchos lenguajes tienen un tipo de precisión simple (a menudo llamado "flotante") y un tipo de precisión doble (a menudo llamado "doble").

booleanos

Un tipo booleano , normalmente denominado "bool" o "booleano", suele ser un tipo lógico que puede tener el valor "verdadero" o "falso". Aunque sólo se necesita un bit para dar cabida al conjunto de valores "verdadero" y "falso", los lenguajes de programación normalmente implementan tipos booleanos como uno o más bytes.

Muchos lenguajes (por ejemplo, Java , Pascal y Ada ) implementan valores booleanos que se adhieren al concepto de booleano como un tipo lógico distinto. Sin embargo, algunos lenguajes pueden convertir implícitamente booleanos en tipos numéricos en ocasiones para dar una semántica extendida a 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 "falso" y cualquier otro valor se interpreta como "verdadero". [9] El C99 más nuevo agregó un tipo booleano distinto _Bool(el nombre más intuitivo bool, así como las macros true, y falsese puede incluir con stdbool.h ), [10] y C++ admite boolcomo tipo integrado y "verdadero" y "falso". " como palabras reservadas. [11]

Idiomas específicos

Java

El conjunto de tipos de datos primitivos de la máquina virtual Java consta de: [12]

C tipos básicos

El conjunto de tipos de datos básicos de C es similar al de Java. Como mínimo, hay cuatro tipos, char, int, floaty double, pero los calificadores short, long, signedy unsignedsignifican que C contiene numerosos tipos primitivos de punto flotante y enteros dependientes del objetivo. [15] C99 amplió este conjunto agregando el tipo booleano _Booly permitiendo que el modificador longse use dos veces en combinación con int(por ejemplo long long int). [dieciséis]

Esquema XML

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

javascript

En JavaScript, hay 7 tipos de datos primitivos: cadena, número, bigint, booleano, indefinido, símbolo y nulo. Estos no son objetos y no tienen métodos. [19]

Visual Basic .NET

En Visual Basic .NET , los tipos de datos primitivos constan de 4 tipos integrales, 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. [20]

Óxido

Rust tiene enteros primitivos de ancho fijo sin signo y con signo en el formato uo iseguidos respectivamente de cualquier ancho de bits que sea una potencia de dos entre 8y 128dando los tipos u8, u16, u32, u64, u128, i8, i16, i32y i64. [21] También están disponibles los tipos y que son enteros sin signo y con signo que tienen el mismo ancho de bits como referencia y el tipo se utiliza para índices en matrices y tipos de colecciones indexables. [21]i128usizeisizeusize

Rust también tiene:

Tipos incorporados

Los tipos integrados se distinguen de otros por tener soporte específico en el compilador o tiempo de ejecución, hasta el punto de que no sería posible definirlos simplemente en un archivo de encabezado o módulo de biblioteca estándar. [22] Además de los números enteros, números de punto flotante y 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 idiomas, como Julia, incluyen un tipo de carácter Unicode verdadero de 32 bits como primitivo. [23] Otros lenguajes como JavaScript , Python , Ruby y muchos dialectos de BASIC no tienen un tipo de carácter primitivo, sino que agregan cadenas como un tipo de datos primitivo, generalmente usando la codificación UTF-8 . Normalmente se utilizan cadenas con una longitud de uno para representar caracteres individuales.

Algunos idiomas tienen tipos de "caracteres" que son demasiado pequeños para representar todos los caracteres Unicode. Estos se clasifican más adecuadamente como tipos de números 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 denominan chartipo 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. [24]

El término "cadena" tampoco siempre se refiere a una secuencia de caracteres Unicode, sino que se refiere a una secuencia de bytes. Por ejemplo, x86-64 tiene instrucciones de "cadena" para mover, configurar, buscar o comparar una secuencia de elementos, donde un elemento podría tener 1, 2, 4 u 8 bytes de longitud. [25]

Ver también

Referencias

  1. ^ Piedra, RG; Cooke, DJ (5 de febrero de 1987). Construcción del programa. Prensa de la Universidad de Cambridge. pag. 18.ISBN _ 978-0-521-31883-9.
  2. ^ Wikander, enero; Svensson, Bertil (31 de mayo de 1998). Sistemas de tiempo real en aplicaciones mecatrónicas. Medios de ciencia y negocios de Springer. pag. 101.ISBN _ 978-0-7923-8159-4.
  3. ^ ab Khurana, Rohit. Estructura de datos y archivos (para GTU), segunda edición. Editorial Vikas. pag. 2.ISBN _ 978-93-259-6005-3.
  4. ^ Chun, Wesley (2001). Programación básica de Python. Profesional de Prentice Hall. pag. 77.ISBN _ 978-0-13-026036-9.
  5. ^ Olsen, Geir; Allison, Damon; Speer, James (1 de enero de 2008). Manual de diseño de clases de Visual Basic .NET: codificación de clases efectivas. Presione. pag. 80.ISBN _ 978-1-4302-0780-1.
  6. ^ ab Niebla, Agner. "Optimización de software en C++" (PDF) . pag. 29 . Consultado el 28 de enero de 2022 . Las operaciones con números enteros son rápidas en la mayoría de los casos, [...]
  7. ^ "Datos únicos de instrucción única: descripción general | Temas de ScienceDirect".
  8. ^ ab Niebla, Agner (16 de febrero de 2010). "Convenciones de llamada para diferentes compiladores y sistemas operativos de C++: Capítulo 3, Representación de datos" (PDF) . Consultado el 30 de agosto de 2010 .
  9. ^ Kernighan, Brian W ; Ritchie, Dennis M. (1978). El lenguaje de programación C (1ª ed.). Englewood Cliffs, Nueva Jersey : Prentice Hall . pag. 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 datos bool en C++". Geeks para Geeks . 5 de junio de 2017 . Consultado el 15 de octubre de 2020 .
  12. ^ Lindholm, Tim; Grita, Frank; Brajá, 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®.
  13. ^ Cowell, John (18 de febrero de 1997). Essential Java Fast: Cómo escribir software orientado a objetos para Internet. Medios de ciencia y negocios de Springer. pag. 27.ISBN _ 978-3-540-76052-8.
  14. ^ Rak mierda, Sandip; Panigrahi, Goutam (diciembre de 1995). Un manual de programación orientada a objetos con Java. Publicación S. Chand. pag. 11.ISBN _ 978-81-219-3001-7.
  15. ^ Kernighan, Brian W.; Ritchie, Dennis M. (1988). "2.2 Tipos y tamaños de datos". El lenguaje de programación C (Segunda ed.). Englewood Cliffs, Nueva Jersey pág. 36.ISBN _ 0131103709.{{cite book}}: Mantenimiento CS1: falta el editor de la ubicación ( enlace )
  16. ^ Especificación ISO/IEC 9899:1999, TC3 (PDF) . pag. 255, § 6.2.5 Tipos .
  17. ^ Biron, Paul V.; Malhotra, Ashok. "Esquema XML, parte 2: tipos de datos". www.w3.org (Segunda ed.) . 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. ^ "Primitive - Glosario de documentos web de MDN: definiciones de términos relacionados con la web". desarrollador.mozilla.org . MDN. 8 de junio de 2023.
  20. ^ "Tipos en Visual Basic". Documentos de Microsoft . 18 de septiembre de 2021 . Consultado el 18 de mayo de 2022 .
  21. ^ abcde "Tipos de datos: el lenguaje de programación Rust". doc.rust-lang.org . Consultado el 17 de octubre de 2023 .
  22. ^ "Tipos integrados (C++)". aprender.microsoft.com . 17 de agosto de 2021.
  23. ^ "Cuerdas · El lenguaje Julia". docs.julialang.org . Consultado el 29 de enero de 2022 .
  24. ^ Mansoor, Umer (8 de mayo de 2016). "El tipo char en Java está roto". CódigoAhoy . Consultado el 10 de febrero de 2020 .
  25. ^ "E/S e instrucciones de cadena" . Consultado el 29 de enero de 2022 .

enlaces externos