ВУЗ:
Составители:
25
целые числа служат для нумерации элементов в различных на-
борах данных, для обозначения даты и времени, для кодирова-
ния текста, изображения и звука), реализации средств крипто-
графической защиты информации (защиты с помощью
шифрования), в программах электронной почты и в средствах
навигации в Internet для записи адреса и т.д. Поэтому
аппарату-
рой компьютеров обычно поддерживается несколько форматов
представления целочисленных данных и множество операций
над ними.
Целые числа в памяти компьютера всегда хранятся в фор-
мате с фиксированной точкой, что, безусловно, ограничивает
диапазон чисел, с которыми может работать компьютер, и тре-
бует учета особенностей организации выполнения арифметиче-
ских действий в ограниченном
числе разрядов.
Рассмотрим подробнее это представление.
Все числа, которые хранятся в памяти компьютера, занима-
ют определенное количество двоичных разрядов. Это количест-
во определяется форматом числа. Обычно для представления
целых чисел используются несколько форматов (например, в
IBM-совместимых персональных компьютерах поддерживается
три формата: байт (8 разрядов), слово (16 разрядов), двойное
слово (32 разряда)). Целые числа
вписываются в разрядную сет-
ку, соответствующую формату. Для целых чисел разрядная сет-
ка имеет вид
n–1 n–2 n–3 2 1 0
S b
n–2
b
n–3
… b
2
b
1
b
0
где b
i
– разряды двоичной записи целого числа (запись числа
имеет вид последовательности цифр b
n–2
b
n–3
... b
1
b
0
, раздели-
тель между целой и дробной частью числа зафиксирован после
b
0
, дробной части нет), S – разряд, отведенный для представле-
ния знака числа (для положительных чисел знак «+» кодируется
цифрой 0, а знак «–» для отрицательных – цифрой 1), n – коли-
чество двоичных разрядов в разрядной сетке.
Если двоичная запись числа оказывается короче отведенной
для его хранения в памяти компьютера разрядной сетки, то
старшие разряды заполняются нулями.
26
Например, число 11
10
= 1011
2
в формате байта будет запи-
сано как
Номер разряда 7 6 5 4 3 2 1 0
Разряды числа
0 0 0 0 1 0 1 1
(старший (знаковый) разряд заштрихован). В формате слова то
же число будет выглядеть как
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1
Отрицательные числа для упрощения выполнения операций
хранятся в дополнительном коде, который получается путем об-
ращения (инверсии) всех разрядов в двоичной записи числа,
вписанной в разрядную сетку, и добавлением 1.
Такая запись чисел ограничивает диапазоны значений, с ко-
торыми может работать компьютер. Например, для чисел в фор-
мате байта представимы значения от –128 (–2
7
) до 127 (2
7
–
1),
для чисел в формате слова – от –32 768 (–2
15
) до 32 767 (2
15
–1), а
длинные целые числа в формате двойного слова могут прини-
мать значения из диапазона от –2 147 483 648 до 2 147 483 647.
Если по условиям задачи используются только положитель-
ные значения, то их можно хранить в формате чисел без знака –
старший разряд рассматривается как разряд, содержащий двоич-
ную цифру записи числа, а не знак. При этом
диапазон предста-
вимых положительных чисел увеличивается. Например, в байт
можно записать числа от 0 до 255 (2
8
–
1), а в слово – значения от
0 до 65 535 (2
16
–
1).
Особенности представления чисел в памяти компьютера мо-
гут привести и к ошибкам при обработке данных.
Рассмотрим пример. Предположим, что программа выпол-
няет функции подсчета каких-либо объектов и для хранения ко-
личества этих объектов используется представление данных в
формате целого числа со знаком, записанного в байт. Рассмот-
рим ситуацию, когда
количество объектов уже стало равным 127
и увеличивается еще на 1. Результат должен быть равен 128, но
сможем ли мы его получить с помощью компьютера, если рабо-
таем со знаковыми числами в формате байта?
Целое число 127 в памяти компьютера будет представлено
25 26
целые числа служат для нумерации элементов в различных на- Например, число 1110 = 10112 в формате байта будет запи-
борах данных, для обозначения даты и времени, для кодирова- сано как
ния текста, изображения и звука), реализации средств крипто- Номер разряда 7 6 5 4 3 2 1 0
графической защиты информации (защиты с помощью Разряды числа 0 0 0 0 1 0 1 1
шифрования), в программах электронной почты и в средствах
навигации в Internet для записи адреса и т.д. Поэтому аппарату- (старший (знаковый) разряд заштрихован). В формате слова то
рой компьютеров обычно поддерживается несколько форматов же число будет выглядеть как
представления целочисленных данных и множество операций 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
над ними. 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1
Целые числа в памяти компьютера всегда хранятся в фор-
мате с фиксированной точкой, что, безусловно, ограничивает Отрицательные числа для упрощения выполнения операций
диапазон чисел, с которыми может работать компьютер, и тре- хранятся в дополнительном коде, который получается путем об-
бует учета особенностей организации выполнения арифметиче- ращения (инверсии) всех разрядов в двоичной записи числа,
ских действий в ограниченном числе разрядов. вписанной в разрядную сетку, и добавлением 1.
Рассмотрим подробнее это представление. Такая запись чисел ограничивает диапазоны значений, с ко-
Все числа, которые хранятся в памяти компьютера, занима- торыми может работать компьютер. Например, для чисел в фор-
ют определенное количество двоичных разрядов. Это количест- мате байта представимы значения от –128 (–27) до 127 (27 – 1),
во определяется форматом числа. Обычно для представления для чисел в формате слова – от –32 768 (–215) до 32 767 (215–1), а
целых чисел используются несколько форматов (например, в длинные целые числа в формате двойного слова могут прини-
IBM-совместимых персональных компьютерах поддерживается мать значения из диапазона от –2 147 483 648 до 2 147 483 647.
три формата: байт (8 разрядов), слово (16 разрядов), двойное Если по условиям задачи используются только положитель-
слово (32 разряда)). Целые числа вписываются в разрядную сет- ные значения, то их можно хранить в формате чисел без знака –
ку, соответствующую формату. Для целых чисел разрядная сет- старший разряд рассматривается как разряд, содержащий двоич-
ка имеет вид ную цифру записи числа, а не знак. При этом диапазон предста-
вимых положительных чисел увеличивается. Например, в байт
n–1 n–2 n–3 2 1 0
можно записать числа от 0 до 255 (28 – 1), а в слово – значения от
S b n–2 b n–3 … b2 b1 b0 0 до 65 535 (216 – 1).
где b i – разряды двоичной записи целого числа (запись числа Особенности представления чисел в памяти компьютера мо-
имеет вид последовательности цифр b n–2 b n–3 ... b 1 b 0, раздели- гут привести и к ошибкам при обработке данных.
тель между целой и дробной частью числа зафиксирован после Рассмотрим пример. Предположим, что программа выпол-
b0, дробной части нет), S – разряд, отведенный для представле- няет функции подсчета каких-либо объектов и для хранения ко-
ния знака числа (для положительных чисел знак «+» кодируется личества этих объектов используется представление данных в
цифрой 0, а знак «–» для отрицательных – цифрой 1), n – коли- формате целого числа со знаком, записанного в байт. Рассмот-
чество двоичных разрядов в разрядной сетке. рим ситуацию, когда количество объектов уже стало равным 127
Если двоичная запись числа оказывается короче отведенной и увеличивается еще на 1. Результат должен быть равен 128, но
для его хранения в памяти компьютера разрядной сетки, то сможем ли мы его получить с помощью компьютера, если рабо-
старшие разряды заполняются нулями. таем со знаковыми числами в формате байта?
Целое число 127 в памяти компьютера будет представлено
Страницы
- « первая
- ‹ предыдущая
- …
- 11
- 12
- 13
- 14
- 15
- …
- следующая ›
- последняя »
