stringtranslate.com

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

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

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

Общие примитивные типы данных

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

Целые числа

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

Числа с плавающей запятой

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

логические значения

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

Многие языки (например , Java , Pascal и Ada ) реализуют логические значения, придерживаясь концепции логического значения как отдельного логического типа. Однако некоторые языки могут время от времени неявно преобразовывать логические значения в числовые типы , чтобы придать расширенную семантику логическим значениям и логическим выражениям или обеспечить обратную совместимость с более ранними версиями языка. Например, ранние версии языка программирования C, последовавшие за ANSI C и его прежними стандартами, не имели специального логического типа. Вместо этого числовые значения нуля интерпретируются как «ложь», а любое другое значение интерпретируется как «истина». [9] В более новой версии C99 добавлен отдельный логический тип _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 расширил этот набор, добавив логический тип и позволив использовать _Boolмодификатор дважды в сочетании с (например, ). [16]longintlong long int

XML-схема

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

JavaScript

В JavaScript существует 7 примитивных типов данных: строка, число, bigint, логическое значение, неопределенное, символ и ноль. Это не объекты и не имеют методов. [19]

Визуальный Бейсик .NET

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

Ржавчина

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

В Русте также есть:

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

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

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

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

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

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

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

Рекомендации

  1. ^ Стоун, Р.Г.; Кук, ди-джей (5 февраля 1987 г.). Программа «Строительство». Издательство Кембриджского университета. п. 18. ISBN 978-0-521-31883-9.
  2. ^ Викандер, Ян; Свенссон, Бертиль (31 мая 1998 г.). Системы реального времени в мехатронных приложениях. Springer Science & Business Media. п. 101. ИСБН 978-0-7923-8159-4.
  3. ^ аб Хурана, Рохит. Структура данных и файлов (для GTU), 2-е издание. Издательство Викас. п. 2. ISBN 978-93-259-6005-3.
  4. ^ Чун, Уэсли (2001). Базовое программирование на Python. Прентис Холл Профессионал. п. 77. ИСБН 978-0-13-026036-9.
  5. ^ Олсен, Гейр; Эллисон, Дэймон; Спир, Джеймс (1 января 2008 г.). Справочник по проектированию классов Visual Basic .NET: Программирование эффективных классов. Апресс. п. 80. ИСБН 978-1-4302-0780-1.
  6. ^ аб Туман, Агнер. «Оптимизация программного обеспечения на C++» (PDF) . п. 29 . Проверено 28 января 2022 г. Целочисленные операции в большинстве случаев выполняются быстро, [...]
  7. ^ «Одна инструкция, отдельные данные - обзор | Темы ScienceDirect» .
  8. ^ аб Туман, Агнер (16 февраля 2010 г.). «Соглашения о вызовах для различных компиляторов и операционных систем C++: Глава 3, Представление данных» (PDF) . Проверено 30 августа 2010 г.
  9. ^ Керниган, Брайан В .; Ричи, Деннис М (1978). Язык программирования C (1-е изд.). Энглвуд Клиффс, Нью-Джерси : Прентис Холл . п. 41. ИСБН 0-13-110163-3.
  10. ^ «Библиотека поддержки логических типов» . devdocs.io . Проверено 15 октября 2020 г.
  11. ^ «Тип данных Bool в C++». Гики для Гиков . 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. Издательство С. Чанд. п. 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. ^ Бирон, Пол В.; Малхотра, Ашок. «XML-схема, часть 2: типы данных». www.w3.org (Второе изд.) . Проверено 29 января 2022 г.
  18. Филлипс, Ли Энн (18 января 2002 г.). «Объявление НОТАЦИИ | Понимание определений типов XML-документов». www.informit.com . Проверено 29 января 2022 г.
  19. ^ «Примитивный - Глоссарий веб-документов MDN: определения терминов, связанных с Интернетом» . http://developer.mozilla.org . МДН. 8 июня 2023 г.
  20. ^ «Типы в Visual Basic». Документы Майкрософт . 18 сентября 2021 г. Проверено 18 мая 2022 г.
  21. ^ abcde «Типы данных — язык программирования Rust». doc.rust-lang.org . Проверено 17 октября 2023 г.
  22. ^ «Встроенные типы (C++)» . Learn.microsoft.com . 17 августа 2021 г.
  23. ^ «Струны · Язык Джулии» . docs.julialang.org . Проверено 29 января 2022 г.
  24. Мансур, Умер (8 мая 2016 г.). «Тип char в Java сломан». КодАхой . Проверено 10 февраля 2020 г.
  25. ^ «Ввод-вывод и строковые инструкции» . Проверено 29 января 2022 г.

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