Лекция: Компьютерное представление целых чисел.
Целые числа – это простейшие числовые типы данных, с которыми оперирует компьютер. Для представления целых чисел используются специально для них предназначенные типы данных.
Специальные типы для целых чисел вводятся для:
· эффективного расходования памяти;
· повышения быстродействия;
· введения операции деления нацело с остатком вместо приводящего к потере точности обычного деления вещественных чисел.
В подавляющем большинстве задач, решаемых с помощью ЭВМ, многие действия сводятся к операциям над целыми числами. Сюда относятся задачи экономического характера, при решении которых данными служат количества акций, сотрудников, деталей, транспортных средств и т.д. Целые числа используются для обозначения даты и времени, и для нумерации различных объектов: элементов массивов, записей в базах данных, машинных адресов и т.д.
Для компьютерного представления целых чисел обычно используется несколько различных типов данных, отличающихся друг от друга количеством разрядов. Чаще всего используется восьми-, шестнадцати– и тридцатидвухразрядное представление чисел (один, два или четыре байта соответственно).
Для целых чисел существуют два представления: без знаковое (только для неотрицательных целых чисел) и со знаком. Очевидно, что отрицательные числа можно представлять только в знаковом виде.
Различие в представлении целых чисел со знаком и без знака вызвано тем, что в ячейках одного и того же размера в без знаковом типе можно представить больше различных положительных чисел, чем в знаковом.
Например, в байте (8 разрядов) можно представить без знаковые числа от 0 до 255.
Максимальное число, записанное в восьми разрядах ячейки соответствует восьми единицам и равно:
111111112 = 1*27 + 1*26 + 1*25 + 1*24 + 1*23 + 1*22 + 1*21 + 1*20= 255.
Таким образом, для без знаковых типов нижняя граница диапазона значений всегда равна 0, а верхнюю границу диапазона допустимых значений можно подсчитать, зная количество разрядов, занимаемых элементами данного типа.
Верхняя граница диапазона допустимых значений для без знаковых типов рассчитывается по формуле 2k – 1, где k – количество разрядов в ячейке
Знаковые положительные числа в байте можно представить только от 0 до 127.
Старший (левый) разряд отводится под знак числа, остальные
7 разрядов под само число. Максимальное число в знаковом представлении соответствует семи единицам и равно:
11111112 = 1*26 + 1*25 + 1*24 + 1*23 + 1*2 + 1*21 + 1*20= 127.
Поэтому, если известно, что некоторая числовая величина является неотрицательной, то лучше рассматривать ее как без знаковую.
Диапазон допустимых значений для знаковых типов рассчитывается по формулам:
Нижняя граница допустимых значений: 2k-1;
Верхняя граница допустимых значений: 2k-1 – 1, где k – количество разрядов в ячейке.
Рассмотрим алгоритм представления в компьютере целых положительных чисел.
Пример: Требуется получить внутреннее 8-разрядное представление десятичного числа 54.
1. Для этого целое положительное число переводится в двоичную систему счисления.
2. Полученное двоичное число записывается в 8 разрядах так, что в младшем разряде ячейки находится младший разряд числа.
3. Двоичное число дополняется, если это необходимо, слева нулями до соответствующего числа разрядов (8-ми, 16-ти, 32-х и более);
Мы рассмотрели компьютерное представление целых положительных чисел.
Следующий вопрос: как представляются в компьютере целые отрицательные числа.
В ЭВМ в целях упрощения выполнения арифметических операций применяют специальные коды для представления чисел. Использование кодов позволяет свести операцию вычитания чисел к операции поразрядного сложения кодов этих чисел.
Применяются прямой, обратный и дополнительный коды чисел.
К кодам выдвигаются следующие требования:
1) Разряды числа в коде жестко связаны с определенной разрядной сеткой.
2) Для записи кода знака в разрядной сетке отводится фиксированный, строго определенный разряд.
Например, если за основу представления кода взят один байт, то для представления числа будет отведено 7 разрядов, а для записи кода знака один разряд. Знаковым разрядом является старший разряд в разрядной сетке.