Jump to content

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

(Перенаправлено с базового типа )

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

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

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

[ редактировать ]

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

Целые числа

[ редактировать ]

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

Размер ( байты ) Размер ( бит ) Имена Знаковый диапазон ( представление в виде дополнения до двух ) Беззнаковый диапазон
1 байт 8 бит Байт , октет , минимальный размер char в C99 (см. Limits.h CHAR_BIT) от −128 до +127 от 0 до 255
2 байта 16 бит x86 слово , минимальный размер short и int в С от −32 768 до +32 767 от 0 до 65 535
4 байта 32 бита двойное слово x86, минимальный размер long в C, реальный размер int для большинства современных компиляторов C, [8] указатель для IA-32- совместимых процессоров от −2 147 483 648 до +2 147 483 647 от 0 до 4 294 967 295
8 байт 64 бита Четверное слово x86, минимальный размер long long в C, реальный размер long для большинства современных компиляторов C, [8] указатель для x86-64 -совместимых процессоров от −9 223 372 036 854 775 808 до +9 223 372 036 854 775 807 от 0 до 18 446 744 073 709 551 615

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

[ редактировать ]

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

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

[ редактировать ]

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

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

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

[ редактировать ]

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

Основные типы C

[ редактировать ]

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

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

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

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

[ редактировать ]

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

Ржавчина

[ редактировать ]

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

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

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

[ редактировать ]

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

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

[ редактировать ]

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

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

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

См. также

[ редактировать ]
  1. ^ Стоун, Р.Г.; Кук, ди-джей (5 февраля 1987 г.). Программа «Строительство» . Издательство Кембриджского университета. п. 18. ISBN  978-0-521-31883-9 .
  2. ^ Викандер, Ян; Свенссон, Бертиль (31 мая 1998 г.). Системы реального времени в мехатронных приложениях . Springer Science & Business Media. п. 101. ИСБН  978-0-7923-8159-4 .
  3. ^ Jump up to: а б Хурана, Рохит. Структура данных и файлов (для 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. ^ Jump up to: а б Туман, Агнер. «Оптимизация программного обеспечения на C++» (PDF) . п. 29 . Проверено 28 января 2022 г. Целочисленные операции в большинстве случаев выполняются быстро, [...]
  7. ^ «Одна инструкция, отдельные данные — обзор | Темы ScienceDirect» .
  8. ^ Jump up to: а б Туман, Агнер (16 февраля 2010 г.). «Соглашения о вызовах для различных компиляторов и операционных систем C++: Глава 3, Представление данных» (PDF) . Проверено 30 августа 2010 г.
  9. ^ Керниган, Брайан В .; Ричи, Деннис М (1978). Язык программирования C (1-е изд.). Энглвуд Клиффс, Нью-Джерси : Прентис Холл . п. 41 . ISBN  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: определения терминов, связанных с Интернетом» . МДН. 8 июня 2023 г.
  20. ^ «Типы данных и структуры данных JavaScript» . МДН. 9 июля 2024 г.
  21. ^ «Типы в Visual Basic» . Документы Майкрософт . 18 сентября 2021 г. Проверено 18 мая 2022 г.
  22. ^ Jump up to: а б с д и «Типы данных — язык программирования Rust» . doc.rust-lang.org . Проверено 17 октября 2023 г.
  23. ^ «Встроенные типы (C++)» . Learn.microsoft.com . 17 августа 2021 г.
  24. ^ «Струны · Язык Джулии» . docs.julialang.org . Проверено 29 января 2022 г.
  25. ^ Мансур, Умер (8 мая 2016 г.). «Тип char в Java неверен» . КодАхой . Проверено 10 февраля 2020 г.
  26. ^ «Ввод-вывод и строковые инструкции» . Проверено 29 января 2022 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 4876d4c790ac37aada5d624891acdc5e__1721780280
URL1:https://arc.ask3.ru/arc/aa/48/5e/4876d4c790ac37aada5d624891acdc5e.html
Заголовок, (Title) документа по адресу, URL1:
Primitive data type - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)