Введение
Целое число – это данные интегрального типа, тип данных, который представляет определенный диапазон математических целых чисел. Интегральные типы данных могут быть разного размера и могут допускать или не допускать отрицательные значения. Целые числа обычно представляются в компьютере в виде группы двоичных цифр (битов). Размер этой группы может варьироваться, поэтому набор доступных размеров целых чисел различается в зависимости от типа компьютера. Аппаратное обеспечение компьютера почти всегда предоставляет возможность представления регистра процессора или адреса памяти в виде целого числа.
In computer science, an integer is a datum of integral data type, a data type that represents some range of mathematical integers. Integral data types may be of different sizes and may or may not be allowed to contain negative values. Integers are commonly represented in a computer as a group of binary digits (bits). The size of the grouping varies so the set of integer sizes available varies between different types of computers. Computer hardware nearly always provides a way to represent a processor register or memory address as an integer.
Ценность и представление
Значение элемента с интегральным типом – это математическое целое число, которому оно соответствует. Интегральные типы могут быть беззнаковыми (способными представлять только неотрицательные целые числа) или знаковыми (способными представлять также отрицательные целые числа). Целое значение обычно указывается в исходном коде программы как последовательность цифр, опционально с префиксом + или −. Некоторые языки программирования допускают другие обозначения, такие как шестнадцатеричная (основание 16) или восьмеричная (основание 8) системы счисления. Некоторые языки программирования также допускают разделители групп цифр. Внутреннее представление данных – это способ хранения значения в памяти компьютера. В отличие от математических целых чисел, типичное значение в компьютере имеет минимальное и максимальное возможное значение. Наиболее распространенным представлением положительного целого числа является строка битов, использующая двоичную систему счисления. Порядок байтов памяти, хранящих биты, может варьироваться; см. порядок байтов (endianness). Ширина, точность или биторазрядность интегрального типа – это количество битов в его представлении. Интегральный тип с n битами может кодировать 2n чисел; например, беззнаковый тип обычно представляет неотрицательные значения от 0 до 2n−1. Иногда используются другие кодировки целых значений в битовые шаблоны, например, двоично-десятичный код (BCD) или код Грея, или в виде печатных символьных кодов, таких как ASCII. Существует четыре известных способа представления знаковых чисел в двоичной вычислительной системе. Наиболее распространенным является дополнительный код (two's complement), который позволяет знаковому интегральному типу с n битами представлять числа от −2(n−1) до 2(n−1)−1. Арифметика дополнительного кода удобна, поскольку существует взаимно однозначное соответствие между представлениями и значениями (в частности, нет отдельных +0 и −0), и поскольку операции сложения, вычитания и умножения не требуют различать знаковые и беззнаковые типы. Другие возможности включают прямой код со смещением, представление знака и величины и обратный код. Некоторые языки программирования определяют размеры целых чисел независимо от машины; другие имеют различные определения в зависимости от размера слова процессора. Не все языковые реализации определяют переменные всех размеров целых чисел, и определенные размеры могут даже не быть различными в конкретной реализации. Целое число в одном языке программирования может иметь другой размер в другом языке, на другом процессоре или в контексте выполнения с другой битовой разрядностью; см. Некоторые старые компьютерные архитектуры использовали десятичные представления целых чисел, хранящиеся в двоично-десятичном коде (BCD) или другом формате. Эти значения обычно требуют размеров данных 4 бита на десятичную цифру (иногда называемую тетрадой), обычно с дополнительными битами для знака. Многие современные процессоры обеспечивают ограниченную поддержку десятичных целых чисел в качестве расширенного типа данных, предоставляя инструкции для преобразования таких значений в двоичные значения и обратно. В зависимости от архитектуры, десятичные целые числа могут иметь фиксированные размеры (например, 7 десятичных цифр плюс знак помещаются в 32-битное слово) или могут быть переменной длины (до некоторого максимального размера цифр), обычно занимая две цифры на байт (октет).
Some older computer architectures used decimal representations of integers, stored in binary coded decimal (BCD) or other format. These values generally require data sizes of 4 bits per decimal digit (sometimes called a nibble), usually with additional bits for a sign. Many modern CPUs provide limited support for decimal integers as an extended datatype, providing instructions for converting such values to and from binary values. Depending on the architecture, decimal integers may have fixed sizes (e. g., 7 decimal digits plus a sign fit into a 32 bit word), or may be variable length (up to some maximum digit size), typically occupying two digits per byte (octet).
Байты и октеты
Термин «байт» первоначально означал «наименьшую адресуемую единицу памяти». В прошлом использовались байты размером 5, 6, 7, 8 и 9 бит. Существовали также компьютеры, способные адресовать отдельные биты («машина с битовой адресацией»), или которые могли адресовать только 16- или 32-битные величины («машина со словесной адресацией»). Термин «байт» обычно вообще не использовался применительно к машинам с битовой и словесной адресацией. Термин «октет» всегда обозначает 8-битное количество. Он чаще всего используется в области компьютерных сетей, где компьютерам с разной шириной байта может потребоваться взаимодействовать. В современном использовании «байт» почти всегда означает восемь бит, поскольку все остальные размеры вышли из употребления; таким образом, «байт» стал синонимом «октета».
Слова
Термин "слово" используется для обозначения небольшой группы битов, которые одновременно обрабатываются процессорами определенной архитектуры. Таким образом, размер слова зависит от конкретного типа процессора. Использовались различные размеры слов, включая 6, 8, 12, 16, 18, 24, 32, 36, 39, 40, 48, 60 и 64 бита. Поскольку размер слова определяется архитектурой, он обычно задается первым процессором в семействе, а не характеристиками более поздних совместимых процессоров. Значения терминов, производных от "слова", таких как "длинное слово", "двойное слово", "четырехсловное слово" и "полуслово", также могут различаться в зависимости от процессора и операционной системы.
Стандартное целое число
Стандартный размер целого числа зависит от платформы. В языке C он обозначается `int` и должен быть не менее 16 бит. Системы Windows и Unix используют 32-битные целые числа как на 32-битных, так и на 64-битных архитектурах.
Долго-долго
В версии C99 языка программирования C и версии C++11 C++ поддерживается тип `long long`, который имеет как минимум вдвое большую емкость, чем стандартный тип `long`. Этот тип не поддерживается компиляторами, требующими соответствия кода C предыдущему стандарту C++ – C++03, поскольку в C++03 этот тип отсутствовал. Для компилятора, соответствующего стандартам ANSI/ISO, минимальные требования к диапазону значений составляют −(263−1). Это может создавать проблемы при обмене кодом и данными между платформами или при непосредственном доступе к аппаратному обеспечению. Поэтому существует несколько наборов заголовочных файлов, предоставляющих типы фиксированной ширины, независимые от платформы. Стандартная библиотека C предоставляет `stdint.h`; она была введена в C99 и C++11.