Что такое single в информатике

Информатика

Викулин Максим Александрович

Лекция 4

Представление вещественных чисел в памяти вычислительной машины

Формы записи

Существует две формы записи вещественных чисел:

Нормальная экспоненциальная форма

Среди множества экспоненциальных форм выделяют нормальную экспоненциальную форму, которая служит основой для представления вещественных чисел в памяти машины.

Для десятичной системы: –0,125625 × 10 3

Для двоичной системы: 10110,112 = 1,0110112 × 2 4

где 1,011011 — нормализованная мантисса;

4 — истинный порядок.

Форматы представления

Формат представления вещественных чисел (4 байта с нормализованной мантиссой и смещеным порядком):

single — 4 байта (минимальная длина машинного слова с плавающей точкой).

Существуют также более вместимые форматы:

Представление вещественных чисел

Смещенный порядок (СП) введен для того, чтобы хранить истинный порядок (ИП) в виде неотрицательного числа.

Смещение введено для того, чтобы СП гарантированно был неотрицательный. Для single смещение равно 127.

Содержание ячейки принято записывать в шестнадцатиричной системе. Формат single содержит 32 бита, то есть 8 знаков в шестнадцатиричной системе.

Примеры

Проведем нормализацию: –1,1111011012 × 2 6

СП = 127 + 6 = 133 = 100001012

11000010111110110.0

Примеры

Найти значение числа A = 43E3800016 (формат single).

010000111110001110.0

СП = 8716 = 128 + 7 = 135 = 127 + ИП ⇒ ИП = 8.

1,110001112 × 2 8 = 1110001112 = 1C716 = 455

Примеры

Представить число A = 0,0625 в типе single.

0011110110.0

Сложение и вычитание

Для сложения или вычитания двух представлений чисел необходимо:

Умножение и деление

Для умножения или деления двух представлений чисел необходимо:

Особенности представления в формате single

1111111111.1

Максимальное значение: 1,11111111111111111111111 × 2 127

0111111111.1

Машинный ноль

Существует машинный ноль (окрестность целого числа 0), в которой находятся вещественные числа, не имеющие машинного представления в вещественной форме.

Например, возможно такая ситуация: a + b = a, где a, b > 0.

Неравномерность распределения

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

Источник

Сводка типов данных

Тип данных — это характеристика переменной, определяющая тип содержащихся в ней данных. К типам данных относятся типы, указанные в таблице ниже, а также пользовательские типы и определенные типы объектов.

Набор встроенных типов данных

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

Тип данныхРазмер хранилищаДиапазон
Boolean2 байтаTrue или False
Byte1 байтот 0 до 255
CollectionНеизвестноНеизвестно
Currency (масштабируемое целое число)8 байтот –922 337 203 685 477,5808 до 922 337 203 685 477,5807
Date8 байтот 1 января 100 г. до 31 декабря 9999 г.
Decimal14 байт+/–79 228 162 514 264 337 593 543 950 335 без десятичной запятой

+/–7,9228162514264337593543950335 с 28 разрядами справа от десятичной запятой

Наименьшее ненулевое число равно +/–0,0000000000000000000000000001

DictionaryНеизвестноНеизвестно
Double (число с плавающей запятой двойной точности)8 байтот –1,79769313486231E308 до –4,94065645841247E-324 для отрицательных значений

от 4,94065645841247E-324 до 1,79769313486232E308 для положительных значений

Integer2 байтаот –32 768 до 32 767
Long (целое число Long)4 байтаот –2 147 483 648 до 2 147 483 647
LongLong (целое число LongLong)8 байтот –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807

Действительно только для 64-разрядных платформ.

LongPtr (целое число Long в 32-разрядных системах, целое число LongLong в 64-разрядных системах)4 байта в 32-разрядных системах

8 байт в 64-разрядных системах

от –2 147 483 648 до 2 147 483 647 в 32-разрядных системах

от –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 в 64-разрядных системах

Object4 байтаЛюбая ссылка на Object
Single (число с плавающей запятой одинарной точности)4 байтаот –3,402823E38 до –1,401298E-45 для отрицательных значений

от 1,401298E-45 до 3,402823E38 для положительных значений

String (переменная длина)10 байтов + длина строкиот 0 до приблизительно 2 миллиардов
String (фиксированная длина)Длина строкиот 1 до приблизительно 65 400
Variant (с числами)16 байтЛюбое числовое значение до диапазона типа Double
Variant (с символами)22 байта + длина строки (24 байтов в 64-разрядных системах)Тот же диапазон как для типа String переменной длины
Определяется пользователем (используя Type)Число, необходимое для элементовДиапазон каждого элемента совпадает с диапазоном его типа данных.

Тип Variant, содержащий массив, требует на 12 байт больше, чем сам массив.

Для массивов данных любого типа требуются 20 байтов памяти плюс 4 байта на каждую размерность массива, плюс количество байтов, занимаемых самими данными. Память, занимаемая данными, может быть вычислена путем умножения количества элементов данных на размер каждого элемента.

Например, данные в одномерном массиве, состоящем из 4 элементов данных Integer размером 2 байта каждый занимают 8 байтов. 8 байтов, необходимых для данных, плюс 24 байта служебных данных составляют 32 байта полной памяти, требуемой для массива. На 64-разрядных платформах массив SAFEARRAY занимает 24 бита (плюс 4 байта на оператор Dim). Элемент pvData является 8-байтным указателем, и он должен находиться в границах 8 байтов.

Тип LongPtr не является настоящим типом данных, так как он преобразуется в тип Long в 32-разрядных средах или в тип LongLong в 64-разрядных средах. Тип LongPtr должен использоваться для представления указателя и обработки значений в операторах Declare и позволяет писать переносимый код, который может выполняться как в 32-разрядных, так и в 64-разрядных средах.

Для преобразования одного типа строковых данных в другой используется функция StrConv.

Преобразование между типами данных

В статье Функции преобразования типов приведены примеры использования следующих функций для приведения выражения к определенному типу данных: CBool, CByte, CCur, CDate, CDbl, CDec, CInt, CLng, CLngLng, CLngPtr, CSng, CStr и CVar.

Ниже приведены страницы соответствующих функций: CVErr, Fix и Int.

Функция CLngLng действительна только для 64-разрядных платформ.

Проверка типов данных

Чтобы проверить типы данных, ознакомьтесь с приведенными ниже функциями.

Возвращаемые значения функции CStr

Если expressionCStr возвращает
BooleanСтрока, содержащая значение True или False.
DateСтрока, содержащая полный или краткий формат даты, установленный в системе.
EmptyСтрока нулевой длины («»).
ErrorСтрока, содержащая слово Error и номер ошибки.
NullОшибка во время выполнения.
Другое числовое значениеСтрока, содержащая число

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

Числовые типы данных (Visual Basic)

Visual Basic предоставляет несколько числовых типов данных для обработки чисел в различных представлениях. Целочисленные типы представляют только целые числа (положительные, отрицательные и нулевые), а Нецелочисленные типы — числа с целой и дробной частями.

для таблицы, показывающей параллельное сравнение типов данных Visual Basic, см. в разделе типы данных.

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

Целочисленные типы данных — это те, которые представляют только числа без дробных частей.

Целочисленные типы данных со знаком имеют тип данных SByte (8-разрядный), короткий тип данных (16-разрядный), целочисленный тип данных (32 бит) и тип данных Long (64-бит). Если переменная всегда хранит целые числа, а не дробные числа, объявите ее как один из этих типов.

Целочисленные типы без знака имеют тип данных Byte (8-разрядный), тип данных UShort (16-разрядный), тип данных UInteger (32 бит) и тип данных ULong (64-бит). Если переменная содержит двоичные данные или данные неизвестной природы, объявите ее как один из этих типов.

Производительность

Арифметические операции выполняются быстрее с целочисленными типами, чем с другими типами данных. Они работают быстрее с Integer типами и UInteger в Visual Basic.

Большие целые числа

Если вам нужны еще большие значения, можно использовать тип данных Decimal. Можно хранить числа от-79,228,162,514,264,337,593,543,950,335 до 79,228,162,514,264,337,593,543,950,335 в переменной, Decimal если не используются десятичные разряды. Однако операции с Decimal числами выполняются значительно медленнее, чем с любым другим числовым типом данных.

Небольшие целые числа

Целые числа без знака

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

Нецелочисленные типы данных — это значения, представляющие числа с целой и дробной частями.

Нецелочисленные числовые типы данных: Decimal (128-разрядная Фиксированная точка), один тип данных (32-разрядная с плавающей запятой) и тип данных double (64-разрядный с плавающей запятой). Все типы со знаком. Если переменная может содержать дробную часть, объявите ее как один из этих типов.

Decimal не является типом данных с плавающей запятой. Decimal числа имеют двоичное целочисленное значение и коэффициент масштабирования целого числа, который указывает, какая часть значения является десятичной дробью.

Вы можете использовать Decimal переменные для денежных значений. Преимущество — точность значений. Double Тип данных является более быстрым и требует меньше памяти, но он подвергается ошибкам округления. Decimal Тип данных сохраняет полную точность до 28 десятичных разрядов.

Производительность

Небольшие величины

Для чисел с наименьшей возможной величиной (ближайшее к 0) Double переменные могут содержать цифры как небольшие, например, 4.94065645841246544 e-324 для отрицательных значений и 4.94065645841246544 e-324 для положительных значений.

Небольшие дробные числа

Если не требуется полный диапазон Double типа данных, можно использовать Single тип данных, который может содержать числа с плавающей запятой в диапазоне от-4028235E e + 38 до 4028235E e + 38. Наименьшими значениями для Single переменных являются-1.401298 e-45 для отрицательных значений и 1.401298 e-45 для положительных значений. При наличии очень большого числа переменных, содержащих небольшие числа с плавающей запятой, среда CLR иногда может Single более эффективно хранить переменные и экономить потребление памяти.

Источник

Сводка типов данных (Visual Basic)

в следующей таблице показаны типы данных Visual Basic, поддерживаемые типы среды clr, их номинальное выделение памяти и диапазоны значений.

тип Visual BasicСтруктура типа среды CLRНоминальное выделение памятиДиапазон значений
BooleanBooleanЗависит от реализации платформыTrue либо False
ByteByte1 байтот 0 до 255 (без знака)
Char (одиночный символ)Char2 байтаот 0 до 65535 (без знака)
ДатаDateTime8 байт0:00:00 (полночь) 1 января 0001 г. по 11:59:59 – 31 декабря 9999
Десятичное числоDecimal16 байтот 0 до +/-79,228,162,514,264,337,593,543,950,335 (+/-7.9. E + 28) † без десятичной запятой; от 0 до +/-7.9228162514264337593543950335 с 28 разрядами справа от десятичного разделителя;

наименьшее ненулевое число — +/-0,0000000000000000000000000001 (+/-1E-28) †

Double (число с плавающей запятой двойной точности)Double8 байт-1.79769313486231570 e + 308 до-4.94065645841246544 E-324 † для отрицательных значений;

4.94065645841246544 e-324 до 1.79769313486231570 E + 308 † для положительных значений

IntegerInt324 байтаот-2 147 483 648 до 2 147 483 647 (подписано)
Long (длинное целое)Int648 байтот-9223372036854775808 до 9 223 372 036 854 775 807 (от а до 18 † ) (подписано)
ОбъектObject см4 байта на 32-разрядной платформе

8 байт на 64-разрядной платформе

Любой тип может храниться в переменной типа Object
SByteSByte1 байтот-128 до 127 (подписано)
Short (короткое целое)Int162 байтаот-32 768 до 32 767 (подписано)
Single (с плавающей запятой одиночной точности)Single4 байта-4028235E e + 38 – 1.401298 E-45 † для отрицательных значений;

1.401298 e-45 до 4028235E E + 38 † для положительных значений

Строка (переменная длина)String смЗависит от реализации платформыот 0 до приблизительно 2 000 000 000 символов Юникода
UIntegerUInt324 байтаот 0 до 4 294 967 295 (без знака)
ULongUInt648 байтот 0 до 18446744073709551615 (1.8. E + 19 † ) (без знака)
Определяемый пользователем (структура)(наследует от ValueType )Зависит от реализации платформыКаждый элемент структуры имеет диапазон, определяемый типом данных и не зависящий от диапазонов других элементов.
UShortUInt162 байтаот 0 до 65 535 (без знака)

† В экспоненциальном представлении«E» означает степень числа 10. Итак, 3.56 E + 2 означает 3,56 x 10 или 356, а 3.56 e-2 — 3,56/10 2 или 0,0356.

Для строк, содержащих текст, используйте StrConv функцию для преобразования одного текстового формата в другой.

Помимо указания типа данных в операторе объявления, можно принудительно задать тип данных некоторых элементов программирования с помощью символа типа. См. раздел символы типа.

Затраты памяти

При объявлении простейшего типа данных нельзя считать, что его потребление памяти совпадает с номинальным выделением хранилища. Это обусловлено следующими соображениями.

служба хранилища Сваивать. Среда CLR может назначать хранилище на основе текущих характеристик платформы, в которой выполняются приложения. Если память почти заполнена, она может упаковать объявленные элементы как можно ближе друг к другу. В других случаях адреса памяти могут быть согласованы с естественными аппаратными границами для оптимизации производительности.

Ширина платформы. назначение служба хранилища на 64-разрядной платформе отличается от назначения на 32-разрядной платформе.

Составные типы данных

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

За. Некоторые составные типы предъявляют дополнительные требования к памяти. Например, массив использует дополнительную память для самого массива, а также для каждого измерения. На 32-разрядной платформе этот объем накладных расходов в настоящее время составляет 12 байт плюс 8 байт для каждого измерения. На 64-разрядной платформе это требование удваивается.

служба хранилища Режим. Нельзя безопасно предположить, что порядок хранения в памяти совпадает с порядком объявления. Вы даже не можете делать предположения относительно выравнивания байтов, например 2-байтовой или 4-байтовой границы. При определении класса или структуры и необходимости управления структурой хранения его элементов можно применить StructLayoutAttribute атрибут к классу или структуре.

Издержки объекта

При Object ссылке на любой простой или составной тип данных в дополнение к данным, содержащимся в типе данных, используется 4 байта.

Источник

Типы данных Visual Basic

Visual Basic for Applications может управлять различными типами данных. Как и в большинстве других систем программирования Visual Basic разделяет обрабатываемые данные на числа, текст, даты и другие типы. Ниже будут приведены описания основных типов данных VBA, а также будет показан объем памяти занимаемый каждым типом и диапазоны значений, которые эти типы могут сохранять.

Типы данных для хранения целых чисел

Для хранения целых чисел используется один из трех численных типов данных.

Тип данных Byte используется для хранения положительных чисел от 0 до 255 и занимает 1 байт памяти.

Integer

Типы данных для хранения дробных чисел

Для хранения чисел, имеющих дробную часть используются типы данных с плавающей и с фиксированной точкой. Числа с плавающей точкой получили свое название вследствие того, что десятичная точка «плавает» в зависимости от того, насколько большое или маленькое значение сохраняется в памяти. VBA имеет два различных типа данных с плавающей точкой и один с фиксированной.

Single

Числа, сохраняемые с использованием типа Single, называют числами одинарной точности.

Double

Числа, сохраняемые с использованием типа Double, называют числами двойной точности.

Currency

Этот тип данных используется для хранения чисел с фиксированной точкой, десятичная точка всегда находится в одном и том же положении, справа от десятичной точки всегда имеется только четыре цифры. Числа типа Currency не имеют ошибок округления, используются при «денежных» вычислениях.

Типы данных для хранения дат, текстовых строк и логических значений

Тип данных Date использует 8 байтов памяти для хранения дат и времени.

String

Любые текстовые данные, содержащие буквы алфавита, цифры, знаки пунктуации и различные символы называются строками. Существуют строки переменной и фиксированной длины.

Тип данных String (переменной длины) используется для хранения текста с количеством символов от 0 до 2 миллиардов и требует памяти в размере 10 байт+один байт на один символ.

Тип данных String (фиксированной длины) используется для хранения текста с количеством от 1 до 654000 символов и требует памяти в размере один байт на один символ.

Boolean

Логические значения True и False называют булевыми значениями. Булевы значения получают как результат операций сравнения.

Тип данных Boolean может иметь одно из двух значений True или False и требует 2-х байтов памяти.

Типы данных Variant и Object

Variant

Тип данных Variant может хранить любой тип данных, за исключением типа Object. Диапазон для данных этого типа зависит от фактически сохраняемых данных и требует памяти в размере 16 байт + 1 байт на символ.

Object

Тип данных Object используется для доступа к любому объекту, распознаваемому VBA. Сохраняет адрес объекта и требует 4-х байтов памяти.

Источник

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

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