Диапазоны типов данных
Опубликовано: Июнь 2016
Самая актуальная документация по Visual Studio 2017: Документация по Visual Studio 2017.
Компиляторы Visual C++ (32-разрядные и 64-разрядные) поддерживают типы, указанные в приведенной ниже таблице.
int
(unsigned``int
)__int8
(unsigned``__int8
)__int16
(unsigned``__int16
)__int32
(unsigned``__int32
)__int64
(unsigned``__int64
)short
(unsigned``short
)long
(unsigned``long
)long
long
(unsigned``long``long
)
Если имя начинается с двух символов подчеркивания (__
), тип данных является нестандартным.
Диапазоны, представленные в следующей таблице, включают указанные значения.
Имя типа | Байты | Другие имена | Диапазон значений |
---|---|---|---|
int | 4 | signed | От -2 147 483 648 до 2 147 483 647 |
unsigned int | 4 | без знака | От 0 до 4 294 967 295 |
__int8 | 1 | char | От -128 до 127 |
unsigned __int8 | 1 | unsigned char | От 0 до 255 |
__int16 | 2 | короткое, короткое целочисленное, короткое целочисленное со знаком | От -32 768 до 32 767 |
unsigned __int16 | 2 | короткое без знака, короткое целочисленное без знака | От 0 до 65 535 |
__int32 | 4 | со знаком, целочисленное со знаком, целочисленное | От -2 147 483 648 до 2 147 483 647 |
unsigned __int32 | 4 | без знака, целочисленное без знака | От 0 до 4 294 967 295 |
__int64 | 8 | длинное длинное, со знаком длинное длинное | От -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 |
unsigned __int64 | 8 | без знака длинное длинное | От 0 до 18 446 744 073 709 551 615 |
bool | 1 | Нет | false или true |
char | 1 | Нет | По умолчанию — от -128 до 127 При компиляции при помощи /J — от 0 до 255 |
signed char | 1 | Нет | От -128 до 127 |
unsigned char | 1 | Нет | От 0 до 255 |
short | 2 | короткое целочисленное, короткое целочисленное со знаком | От -32 768 до 32 767 |
unsigned short | 2 | короткое целочисленное число без знака | От 0 до 65 535 |
long | 4 | длинное целочисленное, длинное целочисленное со знаком | От -2 147 483 648 до 2 147 483 647 |
unsigned long | 4 | длинное целочисленное число без знака | От 0 до 4 294 967 295 |
длинное длинное | 8 | Нет (но эквивалентно __int64) | От -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 |
без знака длинное длинное | 8 | Нет (но эквивалентно unsigned__int64) | От 0 до 18 446 744 073 709 551 615 |
enum | Возможны разные варианты | Нет | См. раздел Заметки ниже в этой статье. |
плавающее | 4 | Нет | 3,4E +/- 38 (7 знаков) |
double | 8 | Нет | 1,7E +/- 308 (15 знаков) |
длинное двойное | То же, что и для двойного | Нет | То же, что и для двойного |
wchar_t | 2 | __wchar_t | От 0 до 65 535 |
В зависимости от характера использования переменная типа __wchar_t
обозначает расширенный символьный или многобайтовый символьный тип. Чтобы указать константу расширенного символьного типа, перед символьной или строковой константой следует использовать префикс L
.
signed
и unsigned
— это модификаторы, которые можно использовать с любым целочисленным типом, кроме типа bool
. Обратите внимание, что char
, signed char
и unsigned char
— это три разных типа, предназначенных для механизмов, подобных перегрузке и шаблонам.
Размер типов int
и unsigned``int
— 4 байта. Однако переносимый код не должен зависеть от размера int
, поскольку языковой стандарт позволяет варьировать его в зависимости от реализации.
C и C++ в Visual Studio также поддерживают целочисленные типы с указанием размера. Дополнительные сведения см. в разделах __int8, __int16, __int32, __int64 и Пределы целых чисел.
Дополнительные сведения об ограничениях, связанных с размером, каждого типа см. в статье Фундаментальные типы.
Диапазон перечисляемых типов зависит от контекста языка и указанных флажков компилятора. Дополнительные сведения см. в статьях Объявления перечислений C и Объявления перечислений C++.
Ключевые слова
Фундаментальные типы
technet.microsoft.com
Справочник по C#. Целочисленные типы
- Время чтения: 2 мин
В этой статье
Целочисленные типы
— это подмножество простых типов. Они могут инициализироваться литералами.The integral numeric types are a subset of the simple types and can be initialized with literals. Кроме того, все целочисленные типы являются типами значений.All integral types are also value types.Все целочисленные типы поддерживают арифметические операторы, побитовые логические операторы, операторы сравнения и равенства.All integral numeric types support arithmetic, bitwise logical, comparison, and equality operators.
Размеры и диапазоныSizes and ranges
В таблице ниже приводятся сведения о размерах и диапазонах для целочисленных типов.The following table shows the sizes and ranges of the integral types:
ТипType | ДиапазонRange | РазмерSize |
---|---|---|
sbyte | От -128 до 127-128 to 127 | 8-разрядное целое число со знакомSigned 8-bit integer |
| От 0 до 2550 to 255 | 8-разрядное целое число без знакаUnsigned 8-bit integer |
short | От -32 768 до 32 767-32,768 to 32,767 | 16-разрядное целое число со знакомSigned 16-bit integer |
ushort | От 0 до 65 5350 to 65,535 | 16-разрядное целое число без знакаUnsigned 16-bit integer |
int | От -2 147 483 648 до 2 147 483 647-2,147,483,648 to 2,147,483,647 | 32-разрядное целое число со знакомSigned 32-bit integer |
uint | От 0 до 4 294 967 2950 to 4,294,967,295 | 32-разрядное целое число без знакаUnsigned 32-bit integer |
long | От -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | 64-разрядное целое число со знакомSigned 64-bit integer |
ulong | От 0 до 18 446 744 073 709 551 6150 to 18,446,744,073,709,551,615 | 64-разрядное целое число без знакаUnsigned 64-bit integer |
Значение по умолчанию для всех целочисленных типов — 0
.The default value for all integral types is 0
. Каждый целочисленный тип имеет константы MinValue
и MaxValue
с минимальным и максимальным значениями этого типа.Each of the integral types has constants named MinValue
and MaxValue
for the minimum and maximum value for that type.
Используйте структуру System.Numerics.BigInteger, чтобы представить целое число со знаком без верхней и нижней границ.Use the System.Numerics.BigInteger structure to represent a signed integer with no upper or lower bounds.
Целочисленные литералыIntegral literals
Целочисленные литералы можно задать как десятичные, шестнадцатеричные или двоичные литералы.Integral literals can be specified as decimal literals
var decimalLiteral = 42;
var hexLiteral = 0x2A;
var binaryLiteral = 0b_0010_1010;
Десятичные литералы не требуют префикса.Decimal literals don’t require any prefix. Префикс x
или X
означает, что это шестнадцатеричный литерал.The x
or X
prefix signifies a hexadecimal literal. Префикс b
или B
означает, что это двоичный литерал.The b
or B
prefix signifies a binary literal. Объявление binaryLiteral
демонстрирует использование символа _
в качестве разделителя разрядов.The declaration of binaryLiteral
demonstrates the use of _
as a digit separator. Разделитель разрядов можно использовать с любыми числовыми литералами.The digit separator can be used with all numeric literals. Двоичные литералы и разделитель разрядов _
поддерживаются начиная с C# 7.0.Binary literals and the digit separator _
are supported starting with C# 7.0.
Суффиксы литераловLiteral suffixes
Суффикс l
или L
указывает, что целочисленный литерал должен иметь тип long
.The l
or L
suffix specifies that the integral literal should be of the long
type. Суффикс ul
или UL
указывает тип ulong
.The ul
or UL
suffix specifies the ulong
type. Если суффикс L
используется с литералом, значение которого больше 9 223 372 036 854 775 807 (максимальное значение типа long
), литерал преобразуется в тип ulong
.If the L
suffix is used on a literal that is greater than 9,223,372,036,854,775,807 (the maximum value of long
), the value is converted to the
type. Если значение, представленное целочисленным литералом, превышает UInt64.MaxValue, происходит ошибка компиляции CS1021.If the value represented by an integer literal exceeds UInt64.MaxValue, a compiler error CS1021 occurs.
Примечание
Строчную букву «l» можно использовать в качестве суффикса.You can use the lowercase letter «l» as a suffix. Однако при этом выдается предупреждение компилятора, так как букву «l» легко перепутать с цифрой «1».However, this generates a compiler warning because the letter «l» is easily confused with the digit «1.» Для ясности используйте «L».Use «L» for clarity.
Тип целочисленного литералаType of an integral literal
Если целочисленный литерал не имеет суффикса, его типом будет первый из следующих типов, в котором может быть представлено его значение:If an integral literal has no suffix, its type is the first of the following types in which its value can be represented:
int
uint
long
ulong
Целочисленный литерал можно преобразовать в тип с меньшим диапазоном, чем у типа по умолчанию, путем присвоения или приведения:You can convert an integral literal to a type with a smaller range than the default using either an assignment or a cast:
byte byteVariable = 42; // type is byte
var signedByte = (sbyte)42; // type is sbyte.
Целочисленный литерал можно преобразовать в тип с большим диапазоном, чем у типа по умолчанию, путем присвоения, приведения или добавления суффикса:You can convert an integral literal to a type with a larger range than the default using either assignment, a cast, or a suffix on the literal:
var unsignedLong = 42UL;
var longVariable = 42L;
ulong anotherUnsignedLong = 42;
var anotherLong = (long)42;
ПреобразованияConversions
Между любыми двумя целочисленными типами, один из которых поддерживает любые значения другого, существует неявное преобразование (которое называется расширяющим).There’s an implicit conversion (called a widening conversion) between any two integral types where the destination type can store all values of the source type. Например, существует неявное преобразование из int
в long
, так как диапазон значений типа int
является строгим подмножеством значений long
.For example, there’s an implicit conversion from int
to long
because the range of int
values is a proper subset of long
. Целочисленный тип без знака меньшего размера может неявно преобразовываться в целочисленный тип со знаком большего размера.There are implicit conversions from a smaller unsigned integral type to a larger signed integral type. Кроме того, существуют неявные преобразования любых целочисленных типов в любые типы с плавающей запятой.There’s also an implicit conversion from any integral type to any floating-point type. Неявных преобразований целочисленных типов со знаком в целочисленные типы без знака нет.There’s no implicit conversion from any signed integral type to any unsigned integral type.
Если неявное преобразование между двумя целочисленными типами не определено, необходимо использовать явное приведение.You must use an explicit cast to convert one integral type to another integral type when an implicit conversion is not defined from the source type to the destination type. Это называется сужающим преобразованием.This is called a narrowing conversion. Явное приведение требуется по той причине, что преобразование может привести к потере данных.The explicit case is required because the conversion can result in data loss.
См. такжеSee also
docs.microsoft.com
Типы данных
Основные типы данных Турбо Паскаля имеют соответствующие эквиваленты в Турбо Си. Однако Си имеет как значительно большее разнообразие типов данных с широким выбором числовых диапазонов для значений целых и с плавающей точкой, так и спецификаторов signed и unsigned (со знаком и без знака). В Си по сравнению с Паскалем отсутствуют типы: диапазон, логический, процедурный (вместо него есть указатель на функцию), строковый, множество.
Кроме того, в Си в отличие от Паскаля, есть правила умолчания. Так, если забыли описать переменную, то по умолчанию она получит тип Signed int.
Классификация типов данных
Модификаторы типа:
Целые
(пределы их значений в Си хранятся в limits.h)
unsigned char (1 байт) 0 — 255
unsigned char (1 байт) 0 – 255
Замечания:
на Си не различаются символьный и целый типы (хранятся и обрабатываются одинаково). Символьные константы и переменные можно использовать в арифметических выражениях:
d=c-‘s’;
для представления русских символов требуется unsigned char (по умолчанию будет signed char)
signed char 1 байт (-128 .. +127)
Замечание: можно явно не указывать signed. Оно подразумевается по умолчанию
short (2 байта) -32768..32767 (всегда 2 байта)
int (2 байта) -32769..32767 (или 4 байта)
по умолчанию размер int совпадает с размером слова на данной ЭВМ (на 16-разр. ЭВМ — 16 бит, на 32-разр. ЭВМ — 32 бит = 4 байта)
unsigned int (2 байта) 0..65535. У констант суффикс U : 325U
long (4 байта) -2^31..2^31-1. У констант суффикс L: 75000L
unsigned long (4 байта) 0..(2^32-1). У констант суффикс UL: 125000UL
В ASNI C-99 long long – 8 байт.
Вещественные
(пределы их значений в Си хранятся в float.h)
Имя типа | размер | диапазон |
float | 4 байта | ±3.4E+308 |
double | 8 байт | ±1.7E+308 |
long double | 10 байт | |
unsigned long | 8 байт |
Логический
В Си нет логического типа данных: выражения, в которых требуются логические значения, интерпретируют значения «ноль», как false(ложь), а все другие (не равные нулю), как «true» (истина).
В Borland C++ есть тип BOOL со значениями false и true.
Диапазоны представления данных
Тип | Размер, бит | Диапазон |
unsigned char | 8 | 0…255 |
char | 8 | –128…127 |
enum | 16 | –32 768…32 767 |
unsigned short | 16 | 0…65535 |
short | 16 | –32768…32767 |
unsigned int | 16 32 | 0…65535 0…4 294 967 295 |
int | 16 32 | –32 768…32 767 –2 147 483 648 …2 147 483 647 |
unsigned long | 32 | 0…4 294 967 295 |
long | 32 | –2 147 483 648 …2 147 483 647 |
float | 32 | 3.4*10–38…3.4*10+38 |
double | 64 | 1.7*10–308…1.7*10+308 |
long double | 80 | 1.7*10–4932…1.7*10+4932 |
pointer | 16 32 | (указатели near, _cs, _ds, _es, _ss) (указатели far, huge) |
Объявление переменных
Основная форма объявления переменных имеет вид
type <список_переменных> ;
Здесь type должен быть одним из существующих в С типов переменных, а <список_переменных> может состоять из одной или нескольких переменных, разделенных запятыми. При объявлении переменных компилятор выделяет место в памяти компьютера, необходимое для размещения переменной данного типа. Примеры объявлений переменных:
int x, у, z;
float radius;
unsigned char ch;
long double integral;
studfiles.net
Фундаментальные типы — cppreference.com
(См. также список утилит, предоставляемых C++ для работы с типами.)
[править] Логический тип
- bool — тип, способный хранить одно из двух значений: true (истина) или false (ложь).
[править] Символьные типы
- signed char — тип для знакового представления символов.
- unsigned char — тип для беззнакового представления символов.
- char — тип для представления символов, который может наиболее эффективно обрабатываться в целевой системе (эквивалентный signed char или unsigned char, но всё же отличный от них тип).
- wchar_t — тип для широкого представления символов.
- char16_t — тип для представления символов в UTF-16. (начиная с C++11)
- char32_t — тип для представления символов в UTF-32. (начиная с C++11)
[править] Целочисленные типы
- int — базовый целочисленный тип. Может быть опущен, если представлен любой из модификаторов. Если не представлен ни один из модификаторов размера, гарантировано имеет ширину не меньше 16 бит. Тем не менее, на 32/64-битных системах почти всегда имеет ширину не меньше 32 бит (см. ниже).
[править] Модификаторы
Модифицируют целочисленный тип. Могут располагаться в любом порядке. Только один модификатор из каждой группы может быть представлен в имени типа.
Знаковость
- signed — целевой тип будет иметь знаковое представление (по умолчанию, если не представлен ни один из вариантов).
- unsigned — целевой тип будет иметь беззнаковое представление.
Размер
- short — целевой тип будет оптимизирован по размеру и иметь ширину не меньше 16 бит.
- long — целевой тип будет иметь ширину не меньше 32 бит.
- long long — целевой тип будет иметь ширину не меньше 64 бит. (начиная с C++11)
[править] Свойства
Данная таблица обобщает все доступные целочисленные типы и их свойства:
Спецификатор типа | Эквивалентный тип | Ширина в битах согласно модели данных | ||||
---|---|---|---|---|---|---|
Стандарт C++ | LP32 | ILP32 | LLP64 | LP64 | ||
short | short int | не меньше чем 16 | 16 | 16 | 16 | 16 |
short int | ||||||
signed short | ||||||
signed short int | ||||||
unsigned short | unsigned short int | |||||
unsigned short int | ||||||
int | int | не меньше чем 16 | 16 | 32 | 32 | 32 |
signed | ||||||
signed int | ||||||
unsigned | unsigned int | |||||
unsigned int | ||||||
long | long int | не меньше чем 32 | 32 | 32 | 32 | 64 |
long int | ||||||
signed long | ||||||
signed long int | ||||||
unsigned long | unsigned long int | |||||
unsigned long int | ||||||
long long | long long int (C++11) | не меньше чем 64 | 64 | 64 | 64 | 64 |
long long int | ||||||
signed long long | ||||||
signed long long int | ||||||
unsigned long long | unsigned long long int (C++11) | |||||
unsigned long long int |
Кроме минимального размера в битах стандарт C++ гарантирует, что
- 1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long).
Примечание: возможен крайний случай, в котором байты имеют размер 64 бита, все типы (включая char) имеет ширину 64 бита, и sizeof возвращает 1 для всех типов.
Примечание: целочисленная арифметика определяется по-разному для знаковых и беззнаковых целочисленных типов. См. арифметические операторы, в частности целочисленное переполнение.
[править] Модели данных
Выборы размеров фундаментальных типов в каждой реализации в совокупности называются моделью данных. Широкое применение нашли 4 модели данных:
32-битные системы:
- LP32 или 2/4/4 (int — 16 бит, long и указатель — 32 бита)
- ILP32 или 4/4/4 (int, long и указатель — 32 бита)
- Win32 API
- Unix и Unix-подобные системы (Linux, Mac OS X)
64-битные системы:
- LLP64 или 4/4/8 (int и long — 32 бита, указатель — 64 бита)
- LP64 или 4/8/8 (int — 32 бита, long и указатель — 64 бита)
- Unix и Unix-подобные системы (Linux, Mac OS X)
Другие модели очень редки. Например, ILP64 (8/8/8: int, long и указатель — 64 бита) появилась только в некоторых ранних 64-битных Unix-системах (н-р, Unicos на компьютерах Cray).
[править] Типы с плавающей точкой
- float — тип с плавающей точкой одинарной точности. Обычно 32-битный тип с плавающей точкой формата IEEE-754
- double — тип с плавающей точкой двойной точности. Обычно 64-битный тип с плавающей точкой формата IEEE-754
- long double — тип с плавающей точкой повышенной точности. Не обязательно отображается на типы IEEE-754. Обычно 80-битный тип с плавающей точкой формата x87 на архитектурах x86 и x86-64.
[править] Промежутки значений
Данная таблица содержит предельные значения наиболее распространнёных числовых форматов. Так как Стандарт C++ разрешает любое представление знаковых целых чисел, в таблице присутствуют как минимальные гарантируемые ограничения (соответствующие пределам обратного кода или прямого кода), так и пределы наиболее используемой реализации — дополнительного кода. Тем не менее, все популярные модели данных (включая все из ILP32, LP32, LP64, LLP64) используют представление в дополнительном коде.
Тип | Размер в битах | Формат | Промежуток значений | |
---|---|---|---|---|
Приблизительный | Точный | |||
символьный | 8 | знаковый (обратный код) | от -127 до 127 | |
знаковый (дополнительный код) | от -128 до 127 | |||
беззнаковый | от 0 до 255 | |||
целочисленный | 16 | знаковый (обратный код) | ± 3,27 · 104 | от -32767 до 32767 |
знаковый (дополнительный код) | от -32768 до 32767 | |||
беззнаковый | от 0 до 6,55 · 104 | от 0 до 65535 | ||
32 | знаковый (обратный код) | ± 2,14 · 109 | от -2147483647 до 2147483647 | |
знаковый (дополнительный код) | от -2147483648 до 2147483647 | |||
беззнаковый | от 0 до 4,29 · 109 | от 0 до 4294967295 | ||
64 | знаковый (обратный код) | ± 9,22 · 1018 | от -9223372036854775807 до 9223372036854775807 | |
знаковый (дополнительный код) | от -9223372036854775808 до 9223372036854775807 | |||
беззнаковый | от 0 до 1,84 · 1019 | от 0 до 18446744073709551615 | ||
с плавающей точкой | 32 | IEEE-754 | ± 3,4 · 10± 38 (~7 цифр) |
|
64 | IEEE-754 | ± 1,7 · 10± 308 (~15 цифр) |
|
[править] Ключевые слова
bool, true, false, char, wchar_t, char16_t, char32_t, int, short, long, signed, unsigned, float, double
[править] См. также
ru.cppreference.com
Типы данных в языке Си : целые, вещественные, символьные
Тип данных определяет множество значений, набор операций, которые можно применять к таким значениям и способ реализации хранения значений и выполнения операций.
Процесс проверки и накладывания ограничений на типы используемых данных называется контролем типов или типизацией программных данных. Различают следующие виды типизации:
- Статическая типизация — контроль типов осуществляется при компиляции.
- Динамическая типизация — контроль типов осуществляется во время выполнения.
Язык Си поддерживает статическую типизацию, и типы всех используемых в программе данных должны быть указаны перед ее компиляцией.
Различают простые, составные и прочие типы данных.
Простые данные
Простые данные можно разделить на
- целочисленные,
- вещественные,
- символьные
- логические.
Составные (сложные) данные
- Массив — индексированный набор элементов одного типа.
- Строковый тип — массив, хранящий строку символов.
- Структура — набор различных элементов (полей записи), хранимый как единое целое и предусматривающий доступ к отдельным полям структуры.
Другие типы данных
- Указатель — хранит адрес в памяти компьютера, указывающий на какую-либо информацию, как правило — указатель на переменную.
Программа, написанная на языке Си, оперирует с данными различных типов. Все данные имеют имя и тип. Обращение к данным в программе осуществляется по их именам (идентификаторам).
Идентификатор — это последовательность, содержащая не более 32 символов, среди которых могут быть любые буквы латинского алфавита a — z, A — Z, цифры 0 — 9 и знак подчеркивания (_). Первый символ идентификатора не должен быть цифрой.
Несмотря на то, что допускается имя, имеющее до 32 символов, определяющее значение имеют только первые 8 символов. Помимо имени, все данные имеют тип. Указание типа необходимо для того, чтобы было известно, сколько места в оперативной памяти будет занимать данный объект.
Компилятор языка Си придерживается строгого соответствия прописных и строчных букв в именах идентификаторов и лексем.
Верно | Неверно |
int a = 2, b; b = a+3; | Int a=2; // правильно int INT a=2; |
int a = 2, b; b = A + 3; // идентификатор А не объявлен | |
int a = 2; b = a + 3; // идентификатор b не объявлен |
Целочисленные данные
Целочисленные данные могут быть представлены в знаковой и беззнаковой форме.
Беззнаковые целые числа представляются в виде последовательности битов в диапазоне от 0 до 2n-1, где n-количество занимаемых битов.
Знаковые целые числа представляются в диапазоне -2n-1…+2n-1-1. При этом старший бит данного отводится под знак числа (0 соответствует положительному числу, 1 – отрицательному).
Основные типы и размеры целочисленных данных:
Количество бит | Беззнаковый тип | Знаковый тип |
8 | unsigned char 0…255 | char -128…127 |
16 | unsigned short 0…65535 | short -32768…32767 |
32 | unsigned int | int |
64 | unsigned long int | long int |
Вещественные данные
Вещественный тип предназначен для представления действительных чисел. Вещественные числа представляются в разрядной сетке машины в нормированной форме.
Нормированная форма числа предполагает наличие одной значащей цифры (не 0) до разделения целой и дробной части. Такое представление умножается на основание системы счисления в соответствующей степени. Например, число 12345,678 в нормированной форме можно представить как
12345,678 = 1,2345678·104
Число 0,009876 в нормированной форме можно представить как
0,009876 = 9,876·10-3
В двоичной системе счисления значащий разряд, стоящий перед разделителем целой и дробной части, может быть равен только 1. В случае если число нельзя представить в нормированной форме (например, число 0), значащий разряд перед разделителем целой и дробной части равен 0.
Значащие разряды числа, стоящие в нормированной форме после разделителя целой и дробной части, называются мантиссой числа.
В общем случае вещественное число в разрядной сетке вычислительной машины можно представить в виде 4 полей.
Различают три основных типа представления вещественных чисел в языке Си:
Тип | Обозна- чение в Си | Кол-во бит | Биты степени | Мантисса | Сдвиг |
простое | float | 32 | 30…23 | 22…0 | 127 |
двойной точности | double | 64 | 62…52 | 51…0 | 1023 |
двойной расширен- ной точности | long double | 80 | 78…64 | 62…0 | 16383 |
Как видно из таблицы, бит целое у типов float и double отсутствует. При этом диапазон представления вещественного числа состоит из двух диапазонов, расположенных симметрично относительно нуля. Например, диапазон представления чисел типа float можно представить в виде:
Пример: представить число -178,125 в 32-разрядной сетке (тип float).
Для представления числа в двоичной системе счисления преобразуем отдельно целую и дробную части:
17810 = 101100102.
0,12510 = 0,0012.
Тогда
178,12510 = 10110010,0012=1,0110010001·2111
Для преобразования в нормированную форму осуществляется сдвиг на 7 разрядов влево).
Для определения степени числа применяем сдвиг:
0111111+00000111 = 10000110.
Таким образом, число -178,125 представится в разрядной сетке как
Символьный тип
Символьный тип хранит код символа и используется для отображения символов в различных кодировках. Символьные данные задаются в кодах и по сути представляют собой целочисленные значения. Для хранения кодов символов в языке Си используется тип char.
Подробнее о кодировке символов
Логический тип
Логический тип применяется в логических операциях, используется при алгоритмических проверках условий и в циклах и имеет два значения:
- истина — true
- ложь — — false
В программе должно быть дано объявление всех используемых данных с указанием их имени и типа. Описание данных должно предшествовать их использованию в программе.
Пример объявления объектов
int n; // Переменная n целого типа
double a; // Переменная a вещественного типа двойной точности
Назад: Язык Си
prog-cpp.ru
Описания типов данных
ИЗУЧЕНИЕ ACTIONSCRIPT 3.0 | 59 |
Язык ActionScript и его синтаксис
Максимальное и минимальное значения, которые может воспроизводить класс Number, хранятся в статических свойствах класса Number, называемых Number.MAX_VALUE и Number.MIN_VALUE.
Number.MAX_VALUE == 1.79769313486231e+308
Number.MIN_VALUE == 4.940656458412467e-324
Расплатой за возможность использовать столь огромный диапазон значений является точность. Тип данных Number использует 52 разряда для хранения значимой части числа, в результате числа, которым требуется больше 52 разрядов для точного воспроизведения, например 1/3, отображаются как приближенные значения. Если для приложения требуется абсолютная точность в работе с десятичными числами, необходимо использовать программное обеспечение, реализующее десятичные арифметические операции с плавающей точкой в качестве альтернативы двоичным операциям.
При сохранении целых значений с помощью типа данных Number для значимой части числа используется только 52 разряда. Тип данных Number использует эти 52 разряда и специальный скрытый разряд для представления целых чисел в диапазоне от -9007199254740992 (-253) до 9007199254740992 (253).
Значение NaN используется не только как значение по умолчанию для переменных с типом Number, но также в качестве результата любой операции, которая должна возвращать число, но не делает этого. Например, при попытке рассчитать квадратный корень отрицательного числа результатом будет NaN. Другими специальным значениями типа Number являются плюс бесконечность и минус бесконечность.
Примечание. Результатом деления на 0 является только NaN, если делитель тоже 0. В результате деления на 0 получается infinity, если делимое положительно, или -infinity, если делимое отрицательно.
Тип данных String
Тип данных String передает последовательность 16-разрядных символов. Для внутреннего хранения значений с типом String используются символы Unicode и формат UTF-16. Значения с типом данных String являются постоянными, такими же, как и при программировании в языке Java. Операция со значением String возвращает новый экземпляр этой строки. По умолчанию значением для переменной, объявленной с типом данных String, является null. Значение null не равнозначно пустой строке («»). Значение null обозначает, что в переменной не сохранено значение, а пустая строка обозначает, что в переменной сохранено значение строкового типа String, не содержащее символов.
Тип данных uint
Для внутреннего хранения типа данных uint используются 32-разрядные целые числа без знака. Этот тип данных содержит диапазон целых значений от 0 до 4294967295 (232 — 1) включительно. Тип данных uint применяется в особых случаях, когда необходимы положительные целые числа. Например, следует использовать тип данных uint для передачи значений цвета пиксела, поскольку тип данных int имеет внутренний разряд для знака, не удобный для обработки цветовых значений. Для целых значений, больших, чем максимальное значение uint, следует использовать тип данных Number, который позволяет обрабатывать 53-разрядные целые значения. По умолчанию значение переменной с типом данных uint равно 0.
Тип данных void
Тип данных void содержит только одно значение undefined. В предыдущих версиях ActionScript значение undefined было значением по умолчанию для экземпляров класса Object. В ActionScript 3.0 значением по умолчанию для экземпляров Object является null. При попытке назначить значение undefined экземпляру объекта Object значение преобразуется в null. Переменной, для которой не задан тип, можно назначить только значение undefined. Переменные без указания типа — это переменные, для которых либо отсутствует любая аннотация типа, либо указан символ звездочки (*) в качестве аннотации типа. Значение void можно использовать только для аннотации возвращаемого типа.
studfiles.net