Delphi

Delphi longword: LongWord Type — Delphi in a Nutshell [Book]

Narod.ru

Narod.ru

Главная

Тип данных

Программа может оперировать данными различных типов: целыми и дробными числами, символами, строками символов, логическими величинами.

Целый тип

Язык Delphi поддерживает семь целых типов данных: shortint, smailint, Longint, Int64, Byte, word и Longword, описание которых приведено в табл. 1.1.

Таблица 1.1. Целые типы

Тип

Диапазон

Формат

Shortint

-128-127

8 битов

Smallint

-32 768 — 32 767

16 битов

Longint

-2 147 483 648 — 2 147 483 647

32 бита

Int64

-263— 263 — 1

64 бита

Byte

0-255

8 битов, беззнаковый

Word

0-65 535

16 битов, беззнаковый

Longword

0 — 4 294 967 295

32 бита, беззнаковый

Object Pascal поддерживает и наиболее универсальный целый тип — Integer, который Эквивалентен Longint.

Вещественный тип

Язык Delphi поддерживает шесть вещественных типов: Reai48, single, Double, Extended, comp, Currency. Типы различаются между собой диапазо-ном допустимых значений, количеством значащих цифр и количеством байтов, необходимых для хранения данных в памяти компьютера (табл. 1.2).

Таблица 1.2. Вещественные (дробные) типы

Тип

Диапазон

Значащих цифр

Байтов

Real48

2.

9x 10-39-1.7×1038

11-12

06

Single

1.5 x 10-45-3.4х 1038

7-8

04

Double

5. 0x10-324 -1.7×10308

15-16

08

Extended

3.6×10-4951 -1.1 х104932

19-20

10

Comp

263+1 — 263-1

19-20

08

Currency

-922 337 203 685 477. 5808 —922 337 203 685 477.5807

19-20

08

Язык Delphi поддерживает и наиболее универсальный вещественный тип — Real, который э квивалентен Double.

Символьный тип

Язык Delphi поддерживает два символьных типа: Ansichar и Widechar:

  • тип Ansichar — это символы в кодировке ANSI, которым соответствуют числа в диапазоне от 0 до 255;
  • тип widechar — это символы в кодировке Unicode, им соответствуют числа от 0 до 65 535.

Object Pascal поддерживает и наиболее универсальный символьный тип — Char, который эквивалентен Ansichar.

Строковый тип

Язык Delphi поддерживает три строковых типа: shortstring, Longstring

  • WideString:
  • тип shortstring представляет собой статически размещаемые в памяти компьютера строки длиной от 0 до 255 символов;
  • тип Longstring представляет собой динамически размещаемые в памяти строки, длина которых ограничена только объемом свободной памяти;
  • тип WideString представляет собой динамически размещаемые в памяти строки, длина которых ограничена только объемом свободной памяти. Каждый символ строки типа WideString является Unicode-символом.

В языке Delphi для обозначения строкового типа допускается использование идентификатора string. Тип string эквивалентен типу shortstring.

В языке Delphi для обозначения строкового типа допускается использование идентификатора string. Тип string эквивалентен типу shortstring.

Логический тип

Логическая величина может принимать одно из двух значений True (истина) или False (ложь). В языке Delphi логические величины относят к типу Boolean.

 


delphi — Разница между LongInt и Integer, LongWord и Cardinal

Краткая версия

 | Тип | 16-битная платформа | 32-битная платформа | 64-битная платформа |
|---------------------------|-----------------|---------------- | ------------------|
| Целое | 16-битный подписанный | 32-битный подписанный | "общий тип"
| Кардинал | 16-битный без знака | 32-битный без знака | "общий тип"
| Лонгинт | 32-битный подписанный | 32-битный подписанный | 64-битная подпись | "основной тип"
| Длинное слово | н/д | 32-битный без знака | 64-битный без знака | "основной тип"
| Int64 | н/д | 64-битная подпись | 64-битная подпись | "основной тип"
| UInt64 | н/д | 64-битный без знака | 64-битный без знака | "основной тип"
| Int32 | н/д | 32-битный подписанный |
| Уинт32 | н/д | 32-битный без знака |
| РоднойИнт | н/д | 32-битный подписанный | 64-битная подпись |
| НативУинт | н/д | 32-битный без знака | 64-битный без знака |
| Фиксированное значение | н/д | 32-битный подписанный |
| ФиксированныйUInt | н/д | 32-битный без знака |
 

Длинный ответ

Мы все знаем, что они должны были сделать:

 | Тип | 16-битная платформа | 32-битная платформа | 64-битная платформа |
|---------------------------|-----------------|---------------- | ------------------|
| Целое | 16-битный подписанный | 32-битный подписанный | 64-битная подпись | "общий тип"
| Кардинал | 16-битный без знака | 32-битный без знака | 64-битный без знака | "общий тип"
| Малый Целый | 16-битный подписанный | "основной тип"
| Слово | 16-битный без знака | "основной тип"
| Лонгинт | 32-битный подписанный | "основной тип"
| Длинное слово | 32-битный без знака | "основной тип"
| Int64 | 64-битная подпись | "основной тип"
| UInt64 | 64-битный без знака | "основной тип"
 
  • основные типы не изменяются
  • универсальных типов (псевдонимов) do

Но они этого не сделали. Так что мы там, где мы есть.

Предположительно Int32 всегда будет 32-битным целым числом со знаком ; но гарантии были нарушены раньше.

Дополнительное чтение

  • Что нового в Delphi и C++Builder XE8
  • Delphi 1 для Windows — Руководство пользователя

Из справки Delphi 5:

Целочисленные типы


Целочисленный тип представляет собой подмножество целых чисел. Общие целочисленные типы: Integer и Cardinal ; используйте их, когда это возможно, поскольку они обеспечивают наилучшую производительность базового ЦП и операционной системы. В таблице ниже указаны их диапазоны и форматы хранения для текущего 32-битного компилятора Object Pascal.

 Тип Диапазон Формат
-------- -------- ---------------
Целое число –2147483648..2147483647 32-битное со знаком
Кардинал 0..4294967295 беззнаковый 32-битный
 

Основные целочисленные типы включают Shortint , Smallint , Longint , Int64 , Byte , Word и Longword . 63–1 подписанный 64-битный Байт 0..255 беззнаковый 8-битный Слово 0..65535 беззнаковое 16-битное Длинное слово 0..4294967295 беззнаковый 32-битный

Как правило, арифметические операции над целыми числами возвращают значение типа Integer , что в текущей реализации эквивалентно 32-битному типу Longint . Операции возвращают значение типа Int64 только при выполнении над операндом Int64 .

Обратите внимание, что «в текущей реализации эквивалентен Longint» . Идея тогда заключалась в том, что Integer изменится; мало ли они поняли, что это было Longint что бы изменить.

Из Руководства пользователя Delphi 1:

Типы данных


В язык Object Pascal встроено несколько типов данных. Вы можете создавать переменные любого из этих предопределенных типов. В следующей таблице перечислены предопределенные типы данных:

Таблица 5. 1 Предопределенные типы данных Object Pascal

  • Целое число : Числа без дробной части в диапазоне от –32768 до 32767. Требуется два байта памяти.
  • Shortint : Числа без дробной части, в диапазоне от –128 до 127. Требуется только один байт памяти.
  • Longint : Числа без дробной части, в диапазоне от –2147483647 до 2147483647. Требуется четыре байта памяти.
  • Байт : Числа без дробной части, в диапазоне от 0 до 255. Требуется один байт памяти.
  • Word : Числа без дробной части, в диапазоне от 0 до 65535. Требуется два байта памяти

Из справки Delphi XE6:

целочисленных типов ================

Целочисленный тип представляет собой подмножество целых чисел.

Целочисленные типы могут быть платформенно-зависимыми и платформенно-независимыми.

Целочисленные типы, зависящие от платформы


Целочисленные типы, зависящие от платформы, преобразуются в соответствии с разрядностью текущей платформы компилятора. 63-1 64-бит со знаком на 64-битных платформах Int64 Нативуинт 0..42964-1 Беззнаковый 64-бит на 64-битных платформах UInt64

Независимые от платформы целочисленные типы

Целочисленные типы, не зависящие от платформы, всегда имеют одинаковый размер, независимо от используемой платформы. Platform-independent integer types include ShortInt , SmallInt , LongInt , Integer , Int64 , Byte , Word , LongWord , Cardinal , and UInt64 964-1 Беззнаковый 64-битный

Обратите внимание, как Integer и Cardinal были задокументированы как зависящие от платформы ? Также обратите внимание, как LongInt и LongWord были задокументированы как независимые от платформы ?

Dr.

Bob об улучшениях языка Delphi Dr.Bob об улучшениях языка Delphi
Клиника Делфи Ворота C++Builder Обучение и консультации Delphi Notes Блог Интернет-магазин доктора Боба
  Dr.Bob в Delphi Language Enhances

Borland Delphi 4, как обычно, содержит ряд усовершенствований языка Object Pascal. Я уже публиковал подробные статьи о параметрах по умолчанию, перегрузке методов и динамических массивах. Но есть некоторые усовершенствования и для нативных типов ObjectPascal, особенно когда речь идет о встроенных целочисленных типах Int64 , LongWord и (заменяется) Cardinal .

Длинное слово
Delphi 4 представляет новый 32-битный целочисленный тип без знака, называемый 9.32-1 (т.е. 4 294 967 295). Как прямое следствие, собственный беззнаковый 32-битный машинный тип Word под названием Cardinal , ранее с (31-битным!) диапазоном 0..2G-1, теперь также имеет этот 32-битный диапазон 0..4G. -1 (наконец, можно сказать) .

Int64
Теперь, когда число «знаковых» слов, наконец, равно и соответствует номиналу целочисленных типов без знака, Delphi 4 немедленно вводит новый 64-битный целочисленный тип, названный Int64 , с колоссальным диапазоном значений 9.63 — 1
(даже не знаю сколько это без выполнения следующей программы):

    программа  Delphi4;
    использует 
    SysUtils, Диалоги;

    константа 
    MinInt64 = $8000000000000000;
    MaxInt64 = $7FFFFFFFFFFFFFFFF;

    начало 
    ShowMessage( 'Int64: ' +IntToStr(MinInt64)+'. .'+IntToStr(MaxInt64))
    конец  .
 
И даже с приведенным выше диалогом трудно понять, насколько велики эти числа. Очень большой, это точно. И как только вы определите целочисленную константу, которая слишком велика, чтобы поместиться в целое число (например, 32-битную целочисленную константу со знаком), компилятор автоматически зарезервирует Int64 для хранения этого значения.
Конечно, все имеет свою цену. В данном случае это скорость. Поскольку Int64 не является собственным целым числом машины, Delphi 4 должен «симулировать» его. А это значит, что это занимает больше времени, чем просто работа с 32-битным целым числом. Сколько еще? Что ж, это тема для моего сеанса Delphi 32-bit Efficiency на BorCon, но пока достаточно знать, что он как минимум в два раза медленнее…

Delphi 4 Целочисленные типы
Объединив всю эту информацию с моей предыдущей диаграммой целочисленных типов Delphi (из моей статьи «Перенос кода Delphi 1. x на 32-разрядную версию», которую необходимо немедленно обновить для Delphi 4) , приводит к следующей таблице:

Borland Pascal 
Delphi 1.x 
Delphi 2.x/3.x 
Delphi 4 
ShortInt  -128 ..127 ShortInt -128..127 ShortInt  -128..127  ShortInt  -128..127 
   SmallInt  -32768..32767  SmallInt  -32768..32767  SmallInt -32768..32767 
LongInt  -2G..2G-1  LongInt  -2G..2G-1  LongInt  -2G. .2G-1  LongInt -2Г..2Г-1 963-1 
Byte  0..255  Byte  0..255  Byte  0..255  Byte  0..255 
Word  0..65535  Word  0..65535  Word  0..65535  Word  0..65535 
   LongWord  0..4G -1 
Integer  -32768..32767  Integer  -32768..32767  Integer  -2G..2G-1  Integer  -2G..2G-1 
   Cardinal  0..65535  Cardinal  0..2G-1  Cardinal  0..4G-1 

Реальный
Исходные 6 байт (или 48 бит) 9Тип 0197 Real был пережитком времен Turbo Pascal, но должен был поддерживаться Delphi (как 6-байтовый тип с плавающей запятой) по соображениям совместимости — по крайней мере, я думаю, что причина была именно в этом.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *