Целое число (информатика)

редактировать
Датум целочисленного типа данных

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

Содержание

  • 1 Значение и представление
  • 2 Общие целые типы данных
    • 2.1 Байты и октеты
    • 2.2 Слова
    • 2.3 Короткое целое число
    • 2.4 Длинное целое
    • 2.5 Длинное длинное
  • 3 См. Также
  • 4 Примечания
  • 5 Ссылки

Значение и представление

Значение элемента с целочисленным типом - это математическое целое число, которому он соответствует. Целочисленные типы могут быть беззнаковыми (способными представлять только неотрицательные целые числа) или знаковыми (способными также представлять отрицательные целые числа).

Целочисленное значение обычно указывается в исходном коде документа программа в виде последовательности цифр, необязательно с префиксом + или -. Некоторые языки программирования допускают другие обозначения, например шестнадцатеричные (основание 16) или восьмеричные (основание 8). Некоторые языки программирования также допускают разделители групп цифр.

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

Наиболее распространенное представление положительного целого числа - это строка из битов с использованием двоичной системы счисления. Порядок в памяти байтов, в которых хранятся биты, меняется; см. порядок байтов. Ширина или точность целочисленного типа - это количество бит в его представлении. Целочисленный тип с n битами может кодировать 2 числа; например, беззнаковый тип обычно представляет неотрицательные значения от 0 до 2-1. Иногда используются другие кодировки целочисленных значений в битовые шаблоны, например двоично-десятичный код или код Грея, или в виде печатных кодов символов, таких как ASCII.

. четыре хорошо известных способа представления чисел со знаком в двоичной вычислительной системе. Наиболее распространенным является дополнение до двух, которое позволяет целочисленному типу со знаком с n битами представлять числа от -2 до 2-1. Арифметика дополнения до двух удобна тем, что существует идеальное взаимно-однозначное соответствие между представлениями и значениями (в частности, нет отдельных +0 и -0), и потому что сложение, вычитание и умножение не требует различения между знаковыми и беззнаковыми типами. Другие возможности включают двоичное смещение, знак-величина и дополнение до единиц.

. Некоторые компьютерные языки определяют целочисленные размеры машинно-независимым способом; другие имеют разные определения в зависимости от размера слова процессора. Не все языковые реализации определяют переменные всех целочисленных размеров, а определенные размеры могут даже не различаться в конкретной реализации. Целое число на одном языке программирования может иметь другой размер на другом языке или на другом процессоре.

Общие целые типы данных

БитыИмяДиапазон (при условии дополнения до двух для со знаком )Десятичные цифрыИспользуетреализации
C /C ++ C# Pascal и Delphi Java SQL FORTRAN D
4полубайт, семиоктетсо знаком: От -8 до 7, от - (2) до 2-11Десятичное число с двоичным кодом, представление одной десятичной цифрын / дн / дн / дн / дн / дн / дн / д
Без знака: от 0 до 15, что равно 2-12
8байт, октет, i8, u8со знаком: от −128 до 127, от - (2) до 2-13символов ASCII, кодовых единиц в кодировке UTF-8 символов int8_t, signed charsbyteShortintbytetinyintinteger (1)byte
Без знака: от 0 до 255, что равно 2-13uint8_t, unsigned charbyteByten / aunsigned tinyintn / aubyte
16полуслово, слово, шор t, i16, u16со знаком: от -32,768 до 32,767, от - (2) до 2-15UCS-2 символов, кодовых единиц в UTF-16 кодировка символов int16_t, short, intshortSmallintshortsmallintinteger (2)short
Unsigned: от 0 до 65 535, что равно 2-15uint16_t, unsigned, unsigned intushortWordcharunsigned smallintн / дushort
32word, long, doubleword, longword, int, i32, u32Подписано: From −2 147 483 648 до 2 147 483 647, от - (2) до 2 - 110UTF-32 символов, истинный цвет с альфа-каналом, FourCC, указатели в 32-битные вычисления int32_t, int, longintLongInt; Integerintintinteger (4)int
Без знака: от 0 до 4 294 967 295, что равно 2-110uint32_t, без знака, unsigned int, unsigned longuintLongWord; DWord; Кардиналн / дunsigned intн / дuint
64слово, двойное слово, длинное слово, длинное длинное, четверное, четверное слово, qword, int64, i64, u64Подписано: от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807, от - (2) до 2-119Время (миллисекунды с эпохи Unix ), указатели в 64-битные вычисления int64_t, long, long longlongInt64longbigintinteger (8)long
Без знака: от 0 до 18 446 744 073 709 551 615, что равно 2 - 120uint64_t, беззнаковое длинное длинноеulongUInt64; QWordн / дбеззнаковый bigintн / дulong
128октаворд, двойное четырехслово, i128, u128Подпись: От - 170,141,183,460,469,231,731,687,303,715,884,105,728 до 170,141,183,460,469,231,731,687,303,715,884,105,727, от - (2) до 2-139Сложные научные вычисления,

IPv6 адреса, только стандартные идентификаторы GUID <-265>C: добавочный

н / дн / пн / дн / дцелое число (16)цент
Без знака: от 0 до 340,282,366,920,938,463,463,374,607,431,768,211,455, что равно 2-139н / дucent
nn-битное целое число. (общий случай)со знаком: - (2) до (2-1)⌈ (n - 1) log 10 2⌉Ada : диапазон -2 ** (n-1).. 2 ** (n-1) -1
Без знака: от 0 до (2-1)⌈n log 10 2⌉Ada: диапазон 0..2 ** n-1, mod 2 ** n; Классы BigDecimal или Decimal стандартных библиотек или сторонних произвольных арифметических библиотек на многих языках, таких как Python, C ++ и т. д.

Различные ЦП поддерживают разные интегральные типы данных. Обычно оборудование поддерживает как подписанные, так и беззнаковые типы, но только небольшой фиксированный набор значений ширины.

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

Некоторые языки, например Lisp, Smalltalk, REXX, Haskell, Python, и Raku поддерживают целые числа произвольной точности (также известные как целые числа бесконечной точности или bignums ). Другие языки, которые не поддерживают эту концепцию в качестве конструкции верхнего уровня, могут иметь библиотеки для представления очень больших чисел с использованием массивов меньших переменных, таких как Java-класс BigIntegerили Perl. Пакет "bigint". Они используют столько памяти компьютера, сколько необходимо для хранения чисел; однако компьютер имеет ограниченный объем памяти, поэтому они также могут представлять только конечное подмножество математических целых чисел. Эти схемы поддерживают очень большие числа, например, один килобайт памяти можно использовать для хранения чисел длиной до 2466 десятичных цифр.

A Boolean или Тип флага - это тип, который может представлять только два значения: 0 и 1, обычно идентифицируемые как false и true соответственно. Этот тип может храниться в памяти с использованием одного бита, но часто ему дается полный байт для удобства адресации и скорости доступа.

Четырехбитная величина известна как полубайт (при приеме пищи меньше порции) или полубайт (каламбур на форме байта слова). Один полубайт соответствует одной цифре в шестнадцатеричном формате и содержит одну цифру или знаковый код в двоично-десятичной системе счисления.

Байты и октеты

Термин «байт» изначально означал «наименьшую адресуемую единицу памяти». Раньше использовались 5-, 6-, 7-, 8- и 9-битные байты. Также были компьютеры, которые могли адресовать отдельные биты («машина с битовой адресацией») или которые могли адресовать только 16- или 32-битные величины («машина с адресацией по словам»). Термин «байт» обычно вообще не использовался в отношении машин с битовой и словарной адресацией.

Термин октет всегда относится к 8-битовой величине. В основном он используется в области компьютерных сетей, где могут связываться компьютеры с разной шириной байта.

В современном использовании байт почти всегда означает восемь бит, поскольку все другие размеры вышли из употребления; таким образом, байт стал синонимом октета.

Слова

Термин «слово» используется для небольшой группы битов, которые одновременно обрабатываются процессорами конкретной архитектуры. Таким образом, размер слова зависит от процессора. Используются слова разных размеров, включая 6, 8, 12, 16, 18, 24, 32, 36, 39, 40, 48, 60 и 64 бит. Поскольку это архитектурно, размер слова обычно устанавливается первым процессором в семействе, а не характеристиками более позднего совместимого процессора. Значения терминов, производных от слова, таких как длинное слово, двойное слово, четверное слово и полуслово, также различаются в зависимости от ЦП и ОС.

Практически все новые настольные процессоры способны использовать 64-битные слова, хотя встроенные процессоры с размером слова 8 и 16 бит все еще распространены. 36-битная длина слова была распространена в первые дни компьютеров.

Одной из важных причин непереносимости программного обеспечения является неправильное предположение, что все компьютеры имеют тот же размер слова, что и компьютер, используемый программистом. Например, если программист, использующий язык C, неправильно объявляет как intпеременную, которая будет использоваться для хранения значений больше 2-1, программа завершится ошибкой на компьютерах с 16-битными целыми числами. Эта переменная должна быть объявлена ​​как long, которая имеет не менее 32 бита на любом компьютере. Программисты также могут ошибочно предполагать, что указатель может быть преобразован в целое число без потери информации, что может работать на (некоторых) 32-разрядных компьютерах, но не работать на 64-разрядных компьютерах с 64-разрядными указателями и 32-разрядными целыми числами. Эта проблема решена с помощью C99 в stdint.h в форме intptr_t.

Короткое целое число

Короткое целое число может представлять целое число, которое может занимать меньше места, а имеющий меньший диапазон по сравнению со стандартным целым числом на той же машине.

В C он обозначается коротким. Он должен быть не менее 16 битов и часто меньше стандартного целого числа, но это не обязательно. Соответствующая программа может предполагать, что она может безопасно хранить значения от - (2-1) до 2-1, но не может предполагать, что диапазон не больше. В Java shortвсегда является 16-битным целым числом. В Windows API тип данных SHORTопределяется как 16-разрядное целое число со знаком на всех машинах.

Общие короткие целые размеры
Язык программирования Тип данных имяПодпись Размер в байтах Минимальное значениеМаксимальное значение
C и C ++ короткийподписанный2−32,767+32,767
беззнаковый короткийбеззнаковый2065,535
C# короткийподписанный2−32,768+32,767
ushortбеззнаковый2065,535
Java короткийсо знаком2−32,768+32,767

Длинное целое

Длинное целое число может представлять целое целое, диапазон которого больше или равен диапазону стандартного целого числа на том же компьютере.

В C он обозначается длинным. Он должен быть не менее 32 бита и может быть или не быть больше стандартного целого числа. Соответствующая программа может предполагать, что она может безопасно хранить значения от - (2-1) до 2-1, но не может предполагать, что диапазон не больше.

<22,073 651 546 754 188>VB.NET
Обычные длинные целые числа
Язык программирования Тип утвержденияПлатформы Имя типа данныхХранение в байтах Подписанный диапазонБеззнаковый диапазон
C ISO / ANSI C99Международный стандартUnix, 16/32-битные системы. Windows, 16/32/64 -битные системыlong4. (минимальное требование 4)от −2 147 483 647 до +2 147 483 647от 0 до 4 294 967 295. (минимальное требование)
C ISO / ANSI C99Международный стандартUnix,. 64-битные системыlong8. (минимальное требование 4)от -9,223,372,036,854,775,807 до +9,223,372,036,854,775,8070 до 18 446 744 073 709 551 615
C ++ ISO / ANSIМеждународный стандартUnix, Windows,. 16/32-разрядная системаlong4. (минимальное требование 4)от –2 147 483 648 до +2 147 483 647.от 0 до 4 294 967 295. (минимальное требование)
C ++ / CLI Международный стандарт. ECMA-372 Unix, Windows,. 16 / 32-битные системыlong4. (минимальное требование 4)от −2 147 483 648 до +2 147 483 647.от 0 до 4 294 967 295. (минимальное требование)
VB Стандарт компанииWindows Long4от –2 147 483 648 до +2 147 483 647Н / Д
VBA Стандарт компанииWindows, Mac OS X Длинный4От −2 147 483 648 до +2 147 483 647Н / Д
SQL Server Стандарт компанииWindows BigInt8от −9 223 372 036 854 775 808 до +9 223 372 036 854 775 807 Международный стандарт ECMAMicrosoft.NET longили Int648от −9,223,372,036,854,775,808 до +9,223,372,036,854,775,807от 0 до 18,446,744,073,709,551,615
Java Международный / Стандарт компанииПлатформа Java long8от −9,223,372,036,854,775,808 до +9,223,372,036,854,775,807Н / Д
Pascal ?Windows, UNIX int648от −9,223,372,036,854,775,808 до +9,223,372,036,854,775,8070 до 18,446,744,073,709,551, 615 (тип Qword)

Long long

В версии C99 языка программирования C и версии C ++ 11 из C ++, поддерживается тип long long, который имеет вдвое большую минимальную емкость, чем стандартный long. Этот тип не поддерживается компиляторами, которым требуется, чтобы код C соответствовал предыдущему стандарту C ++, C ++ 03, поскольку тип long longне существовал в C ++ 03. Для компилятора, совместимого с ANSI / ISO, должны быть выполнены минимальные требования для указанных диапазонов, то есть от - (2-1) до 2-1 для подписанных и от 0 до 2-1 для беззнаковых; однако расширение этого диапазона разрешено. Это может быть проблемой при обмене кодом и данными между платформами или при прямом доступе к оборудованию. Таким образом, существует несколько наборов заголовков, обеспечивающих независимые от платформы типы точной ширины. Стандартная библиотека C предоставляет stdint.h ; это было введено в C99 и C ++ 11.

См. Также

Примечания

Ссылки

Последняя правка сделана 2021-05-24 03:52:34
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте