stringtranslate.com

Примитивный тип данных

В информатике примитивные типы данных — это набор базовых типов данных , из которых строятся все остальные типы данных. [1] В частности, это часто относится к ограниченному набору представлений данных, используемых определенным процессором , которые должны использовать все скомпилированные программы. Большинство процессоров поддерживают аналогичный набор примитивных типов данных, хотя конкретные представления различаются. [2] В более общем смысле примитивные типы данных могут относиться к стандартным типам данных, встроенным в язык программирования ( встроенные типы ). [3] [4] Типы данных, которые не являются примитивными, называются производными или составными . [3]

Примитивные типы почти всегда являются типами значений , но составные типы также могут быть типами значений. [5]

Распространенные примитивные типы данных

Наиболее распространенными примитивными типами являются те, которые используются и поддерживаются компьютерным оборудованием, например, целые числа различных размеров, числа с плавающей точкой и логические булевы значения. Операции над такими типами обычно довольно эффективны. Примитивные типы данных, которые являются собственными для процессора, имеют однозначное соответствие с объектами в памяти компьютера, и операции над этими типами часто являются самыми быстрыми из возможных в большинстве случаев. [6] Например, сложение целых чисел может быть выполнено как одна машинная инструкция, а некоторые предлагают специальные инструкции для обработки последовательностей символов с помощью одной инструкции. [7] Но выбор примитивного типа данных может повлиять на производительность, например, быстрее использовать операции SIMD и типы данных для работы с массивом чисел с плавающей точкой. [6] : 113 

Целые числа

Целочисленный тип данных представляет некоторый диапазон математических целых чисел. Целые числа могут быть либо знаковыми (допускающими отрицательные значения), либо беззнаковыми ( только неотрицательные целые числа ). Обычные диапазоны:

Числа с плавающей точкой

Число с плавающей точкой представляет собой рациональное число ограниченной точности , которое может иметь дробную часть. Эти числа хранятся внутри в формате, эквивалентном научной записи , обычно в двоичной , но иногда в десятичной системе . Поскольку числа с плавающей точкой имеют ограниченную точность, только подмножество действительных или рациональных чисел может быть представлено точно; другие числа могут быть представлены только приблизительно. Во многих языках есть как тип одинарной точности (часто называемый float ), так и тип двойной точности (часто называемый double ).

Булевы значения

Тип Boolean , обычно обозначаемый как bool или boolean , обычно является логическим типом , который может иметь либо значение true , либо значение false . Хотя для размещения набора значений true и false необходим только один бит , языки программирования обычно реализуют типы Boolean как один или несколько байтов.

Многие языки (например, Java , Pascal и Ada ) реализуют булевы типы, придерживаясь концепции Boolean как отдельного логического типа. Однако некоторые языки могут неявно преобразовывать Boolean в числовые типы время от времени, чтобы придать расширенную семантику Boolean и Boolean выражениям или достичь обратной совместимости с более ранними версиями языка. Например, ранние версии языка программирования C, которые следовали ANSI C и его прежним стандартам, не имели выделенного Boolean типа. Вместо этого числовые значения, равные нулю, интерпретируются как false , а любое другое значение интерпретируется как true . [9] В более новом C99 был добавлен отдельный Boolean тип _Bool(более интуитивное название, boolа также макросы true, которые falseмогут быть включены в stdbool.h ), [10] и C++ поддерживает boolкак встроенный тип, а также true и false как зарезервированные слова. [11]

Конкретные языки

Ява

Набор примитивных типов данных виртуальной машины Java состоит из: [12]

Базовые типы C

Набор базовых типов данных C похож на Java. Минимально существует четыре типа, char, int, float, и double, но квалификаторы short, long, signed, и unsignedозначают, что C содержит многочисленные целочисленные и плавающие примитивные типы, зависящие от цели. [15] C99 расширил этот набор, добавив тип Boolean и разрешив использовать _Boolмодификатор дважды в сочетании с (например, ). [16]longintlong long int

XML-схема

Язык определения схемы XML предоставляет набор из 19 примитивных типов данных: [17]

JavaScript

В JavaScript существует 7 примитивных типов данных: string, number, bigint, boolean, symbol, undefined и null. [19] Их значения считаются неизменяемыми . Они не являются объектами и не имеют методов или свойств ; однако все примитивы, кроме undefined и null, имеют объектные оболочки. [20]

Visual Basic .NET

В Visual Basic .NET примитивные типы данных состоят из 4 целочисленных типов, 2 типов с плавающей точкой, 16-байтового десятичного типа, логического типа, типа даты/времени, символьного типа Unicode и строкового типа Unicode. [21]

Ржавчина

Rust имеет примитивные беззнаковые и знаковые целые числа фиксированной ширины в формате uили iсоответственно, за которыми следует любая битовая ширина, которая является степенью двух между 8и , что 128дает типы u8, u16, u32, u64, u128, i8, i16, i32, i64и i128. [22] Также доступны типы usizeи , isizeкоторые являются беззнаковыми и знаковыми целыми числами, которые имеют ту же битовую ширину, что и ссылка, причем usizeтип используется для индексов в массивах и индексируемых типах коллекций. [22]

Rust также имеет:

Встроенные типы

Встроенные типы отличаются от других наличием особой поддержки в компиляторе или среде выполнения, в той степени, в которой их было бы невозможно просто определить в заголовочном файле или стандартном библиотечном модуле. [23] Помимо целых чисел, чисел с плавающей точкой и булевых значений, другие встроенные типы включают в себя:

Символы и строки

Тип символа — это тип, который может представлять все символы Unicode , поэтому должен быть шириной не менее 21 бита. Некоторые языки, такие как Julia, включают настоящий 32-битный тип символа Unicode в качестве примитива. [24] Другие языки, такие как JavaScript , Python , Ruby и многие диалекты BASIC, не имеют примитивного типа символа, но вместо этого добавляют строки в качестве примитивного типа данных, обычно используя кодировку UTF-8 . Строки длиной в один обычно используются для представления отдельных символов.

В некоторых языках есть типы символов , которые слишком малы для представления всех символов Unicode. Их правильнее отнести к целочисленным типам, которым дали вводящее в заблуждение название. Например, в языке C есть тип char, но он определен как наименьшая адресуемая единица памяти, которая, согласно нескольким стандартам (например, POSIX ), должна быть 8 бит . Последние версии этих стандартов называют charего числовым типом. charтакже используется для 16-битного целочисленного типа в Java , но, опять же, это не тип символа Unicode. [25]

Термин строка также не всегда относится к последовательности символов Unicode, а относится к последовательности байтов. Например, x86-64 имеет строковые инструкции для перемещения, установки, поиска или сравнения последовательности элементов, где элемент может быть длиной 1, 2, 4 или 8 байтов. [26]

Смотрите также

Ссылки

  1. ^ Стоун, RG; Кук, DJ (5 февраля 1987 г.). Построение программы. Cambridge University Press. стр. 18. ISBN 978-0-521-31883-9.
  2. ^ Викандер, Ян; Свенссон, Бертил (31 мая 1998 г.). Системы реального времени в мехатронных приложениях. Springer Science & Business Media. стр. 101. ISBN 978-0-7923-8159-4.
  3. ^ ab Khurana, Rohit. Структура данных и файлов (для GTU), 2-е издание. Vikas Publishing House. стр. 2. ISBN 978-93-259-6005-3.
  4. ^ Chun, Wesley (2001). Core Python Programming. Prentice Hall Professional. стр. 77. ISBN 978-0-13-026036-9.
  5. ^ Олсен, Гейр; Эллисон, Дэймон; Спир, Джеймс (1 января 2008 г.). Visual Basic .NET Class Design Handbook: Coding Effective Classes. Apress. стр. 80. ISBN 978-1-4302-0780-1.
  6. ^ ab Fog, Agner. "Оптимизация программного обеспечения на C++" (PDF) . стр. 29 . Получено 28 января 2022 г. Целочисленные операции в большинстве случаев выполняются быстро, [...]
  7. ^ «Одиночная инструкция, одиночные данные — обзор | Темы ScienceDirect».
  8. ^ ab Fog, Agner (2010-02-16). "Соглашения о вызовах для различных компиляторов C++ и операционных систем: Глава 3, Представление данных" (PDF) . Получено 2010-08-30 .
  9. ^ Керниган, Брайан В .; Ритчи, Деннис М. (1978). Язык программирования C (1-е изд.). Энглвуд Клиффс, Нью-Джерси : Prentice Hall . стр. 41. ISBN 0-13-110163-3.
  10. ^ "Библиотека поддержки булевых типов". devdocs.io . Получено 15 октября 2020 г. .
  11. ^ "Тип данных Bool в C++". GeeksforGeeks . 5 июня 2017 г. Получено 15 октября 2020 г.
  12. ^ Линдхольм, Тим; Йеллин, Фрэнк; Браха, Гилад; Бакли, Алекс (13 февраля 2015 г.). «Глава 2. Структура виртуальной машины Java». Спецификация виртуальной машины Java®.
  13. ^ Коуэлл, Джон (18 февраля 1997 г.). Essential Java Fast: Как писать объектно-ориентированное программное обеспечение для Интернета. Springer Science & Business Media. стр. 27. ISBN 978-3-540-76052-8.
  14. ^ Ракшит, Сандип; Паниграхи, Гаутам (декабрь 1995 г.). Справочник по объектно-ориентированному программированию на Java. S. Chand Publishing. стр. 11. ISBN 978-81-219-3001-7.
  15. ^ Керниган, Брайан В.; Ритчи, Деннис М. (1988). "2.2 Типы и размеры данных". Язык программирования C (Второе изд.). Энглвуд Клиффс, Нью-Джерси, стр. 36. ISBN 0131103709.{{cite book}}: CS1 maint: отсутствует местоположение издателя ( ссылка )
  16. ^ Спецификация ISO/IEC 9899:1999, TC3 (PDF) . стр. 255, § 6.2.5 Типы .
  17. ^ Biron, Paul V.; Malhotra, Ashok. "XML Schema Part 2: Datatypes". www.w3.org (Второе изд.) . Получено 29 января 2022 г.
  18. ^ Филлипс, Ли Энн (18 января 2002 г.). «Объявление НОТАЦИИ | Понимание определений типов документов XML». www.informit.com . Получено 29 января 2022 г. .
  19. ^ "Primitive - MDN Web Docs Glossary: ​​Определения терминов, связанных с Интернетом". MDN. 8 июня 2023 г.
  20. ^ "Типы и структуры данных JavaScript". MDN. 9 июля 2024 г.
  21. ^ "Типы в Visual Basic". Microsoft Docs . 18 сентября 2021 г. Получено 18 мая 2022 г.
  22. ^ abcde "Типы данных - Язык программирования Rust". doc.rust-lang.org . Получено 2023-10-17 .
  23. ^ «Встроенные типы (C++)». learn.microsoft.com . 17 августа 2021 г.
  24. ^ "Строки · Язык Julia". docs.julialang.org . Получено 29 января 2022 г. .
  25. ^ Мансур, Умер (8 мая 2016 г.). «Тип char в Java сломан». CodeAhoy . Получено 10 февраля 2020 г. .
  26. ^ "I/O и строковые инструкции" . Получено 29 января 2022 г.

Внешние ссылки