Light-industry-up.ru

Экосистема промышленности

Целый тип

05-07-2023

Целое, целочисленный тип данных (англ. Integer), в информатике — один из простейших и самых распространённых типов данных в языках программирования. Служит для представления целых чисел. Множество чисел этого типа представляет собой подмножество бесконечного множества целых чисел, ограниченное максимальным и минимальным значениями. Если используется 32-разрядное машинное слово, то беззнаковое целое будет представлять значения 0..232−1 ≈ 4×109.[1]

Содержание

Представление

В памяти типовой компьютерной системы целое число представлено в виде цепочки битов фиксированного (кратного 8) размера. Эта последовательность нолей и единиц — ни что иное, как двоичная запись числа, поскольку обычно для представления чисел в современной компьютерной технике используется позиционный двоичный код. Диапазон целых чисел, как правило, определяется количеством байтов в памяти компьютера, отводимых под одну переменную.

Многие языки программирования предлагают выбор между короткими (англ. short), длинными (англ. long) и целыми стандартной длины. Длина стандартного целого типа, как правило, совпадает с размером машинного слова на целевой платформе. Для 16-разрядных операционных систем - этот тип (int) составляет 2 байта и совпадает с типом short int (можно использовать как short, опуская слово int), для 32-разрядных операционных систем он будет равен 4 байтам и совпадает с длинным целым long int (можно использовать как long, опуская слово int), и в этом случае будет составлять 4 байта. Короткое целое short int, для 16-разрядных операционных систем, 32-разрядных операционных систем, 64-разрядных операционных систем составляет — 2 байта. Также в некоторых языках может использоваться тип данных двойное длинное long long, который составляет 8 байт.

Для 64-разрядных операционных систем учитывая разность моделей данных (LP64, LLP64, ILP64), представление целого типа на разных моделях данных может отличаться между собой. Тип int и long может составлять как 4 так и 8 байт.

Стоит отметить, что каждый язык программирования реализует свою сигнатуру представления целых чисел, которая может отличатся от международных стандартов, но обязана его/их поддерживать. К примеру можно отнести кросс-платформенную библиотеку Qt, где целое представляется типом qintX и quintX, где X-8,16,32,64.

Целые типы подразделяются на беззнаковые (англ. unsigned) и знаковые (англ. signed).

Беззнаковые целые

Беззнаковые целые представляют только неотрицательные числа, при этом все разряды кода используются для представления значения числа и максимальное число соответствует единичным значениям кода во всех разрядах: 111..111. m-байтовая переменная целого типа без знака, очевидно, принимает значения от 0 до +28m-1;

В C и C++ для обозначения беззнаковых типов используется префикс unsigned. В C# в качестве показателя беззнаковости используется префикс u (англ. unsigned). Например, для объявления беззнакового целого, равное по размеру одному машинному слову используется тип uint.

Беззнаковые целые, в частности, используются для адресации памяти, представления символов.

Иногда в литературе[2] встречается рекомендации не использовать беззнаковые целые, поскольку он может быть не реализован процессором компьютера, однако вряд ли этот совет следует считать актуальным — большинство современных процессоров (в том числе x86-совместимые[3]) одинаково хорошо работают как со знаковыми, так и с беззнаковыми целыми.

В некоторых языках, например java, беззнаковые целые типы (за исключением символьного) отсутствуют.[4]

Целые со знаком

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

Могут быть использованы и более экзотические представления отрицательных чисел, такие, как, например, систему счисления по основанию -2.[5]

Однако для большинства современных процессоров обычным представлением знаковых числа является дополнительный код. Максимальное положительное число представляется двоичным кодом 0111...111, максимальное по модулю отрицательное кодом 1000...000, а код 111...111 соответствует -1. Такое представление чисел соответствует наиболее простой реализации арифметических логических устройств процессора на логических вентилях, позволяет использовать один и тот же алгоритм сложения и вычитания как для беззнаковых чисел, так и для чисел со знаком (отличие — только в условиях, при которых считается, что наступило арифметическое переполнение).

m-байтовая переменная целого типа со знаком принимает значения от −28m-1 до +28m-1-1.

Операции над целыми

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

Перечислимый тип

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

См. также

Примечания

  1. Бен-Ари, 2000, с. 53-54
  2. Бен-Ари, 2000, с. 54
  3. Урок 7. Расширенные арифметические операции с целыми числами, Низкоуровневое программирование, СУНЦ НГУ
  4. Types, Values and Variables, Java Languaege Specification, 2-nd ed.
  5. Hacker's Delight, 2004, с. 215-221

Литература

  • Основные определения цифровой и микропроцессорной техники, Система дистанционного обучения СПбГУ ИТМО, Програмное обеспечение измерительных систем на базе универсальных компьютеров
  • М. Бен-Ари. Глава 4. Элементарные типы данных // Языки программирования. Практический сравнительный анализ = Understanding Programming Language. — Москва: Мир, 2000. — С. 53-74. — 366 с. — ISBN 5-03-003314-9
  • Теренс Пратт, Марвин Зелковиц. 5.2. Скалярные типы данных // Языки программирования. Разработка и реализация = Programming Language. Design and Implementation. — 4-th edition. — Питер, 2002. — С. 205-216. — 688 с. — ISBN 5-03-003314-9
  • Генри Уоррен мл. Алгоритмические трюки для программистов = Hacker's Delight. — Вильямс, 2004. — 288 с. — ISBN 5-8459-0572-9
  • Behrooz Parhami. Computer Arithmetic: Algorithms and Hardware Designs. — New York: Oxford University Press, 2000. — 510 p. — ISBN 0-19-512583-5

Целый тип.

© 2014–2023 light-industry-up.ru, Россия, Краснодар, ул. Листопадная 53, +7 (861) 501-67-06