Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекц для студенов.doc
Скачиваний:
26
Добавлен:
24.08.2019
Размер:
1.39 Mб
Скачать

1.8.4. Кодирование числовой информации

В компьютере для представления числовой информации используется двоичная система счисления. Числа могут быть записаны в естественной и экспоненциальной форме.

1.8.4.1. Кодирование целых чисел

Для работы с числами человек использует в основном две формы для их записи – естественная и экспоненциальная.

Естественной формой называется более привычная для нас, обычная запись числа, например, 1000 или 3,5.

Экспоненциальная форма записи чисел обычно используется для обозначения очень больших или очень маленьких чисел, т.к. в естественной форме в записи таких чисел используется большое количество незначащих нулей (например, 0,000002 = 0,21-5 или 1000 = 103).

(Числа в компьютере представлены в двоичной системе счисления)

Для представления в компьютере целых чисел в основном используют форматом с фиксированной точкой.

Запятая в таких числах фиксируется строго в конце и остается строго фиксированной. Поэтому этот формат называется форматом с фиксированной точкой.

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

Формат с фиксированной точкой

Формат

Количество разрядов (n), отводимое для хранения числа

Минимальное число

Максимальное число

Интервал числа

Целые числа без знака

1 байт (=8)

0

2n – 1 = 255

0..255

2 байт (n=16)

0

2n – 1 = 65535

0..65535

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

2 байт (n=16)

-2n-1 = -32768

2n-1 –1 = 32767

-32768…32767

4 байт (n=32)

-2n-1 =

-2 147 483 648

2n-1 –1 =

2 147 483 647

-2147483648..

2147483647

Обычно целые числа занимают в памяти ЭВМ 1, 2 или 4 байта. Поэтому легко вычислить диапазон чисел, которые можно сохранить в такой разрядной сетке:

  •  диапазон чисел без знака - в однобайтовой разрядной сетке от 0 до 28-1 = 255, в двухбайтовой - от 0 до 216-1 = 65535;

  •  диапазон чисел со знаком (с учетом того, что старший разряд отводится по знак) - в двухбайтовой разрядной сетке от -215 = - 32768 до 215 - 1 = 32767, в четырехбайтовой разрядной сетке от - 232 = - 2 147 483 648 до 232 - 1 = 2 147 483 647.

Знак положительного числа «+» кодируется нулем, а знак отрицательного числа «-» кодируется единицей.

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

Пример 1

Представить число 2110 в однобайтовой разрядной сетке.

  1. Переведем число 2110 в двоичную систему счисления. 2110 = 101012.

  2. Нарисуем восьмиразрядную сетку (1 байт = 8 бит).

7 6 5 4 3 2 1 0 - номер разряда


3. Впишем число, начиная с младшего разряда.

1

0

1

0

1


4. Заполним оставшиеся разряды нулями.

0

0

0

1

0

1

0

1


Пример 2

Представить число +2110 и -2110 в двухбайтовой разрядной сетке. Представление положительного числа:

1. Переведем модуль числа +2110 в двоичную систему счисления. 2110 = 101012.

  1. Нарисуем шестнадцатиразрядную сетку (2 байт = 16 бит).

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

К од знака

3. Впишем число, начиная с младшего разряда и указав код знака «+» в старшем разряде.

0

1

0

1

0

1

4. Заполним оставшиеся разряды нулями.

0

0

0

0

0

0

0

0

0

0

0

1

0

1

0

1

Представление отрицательного числа.

Дополнительный код отрицательного числа А, хранящегося в n ячейках, равен 2n - |А|.

Дополнительный код представляет собой дополнение модуля отрицательного числа А до 0, поэтому в n-разрядной компьютерной арифметике:

2n - |А| + |А| = 0.

Это равенство тождественно справедливо, так как в компьютерной n-разрядной арифметике 2n 0. Действительно, двоичная запись такого числа состоит из одной единицы и п нулей, а в п - разрядную ячейку может уместиться только п младших разрядов, то есть п нулей.

Для получения дополнительного кода отрицательного числа можно использовать довольно простой алгоритм:

  1. Модуль числа записать прямым кодом в п двоичных разрядах;

  2. Получить обратный код числа, для этого значения всех бит инвертировать (все единицы заменить на нули и все нули заменить на единицы);

  3. К полученному обратному коду прибавить единицу.

1. Переведем модуль числа -2110 в двоичную систему счисления. 2110 = 101012.

  1. Нарисуем шестнадцатиразрядную сетку (2 байт = 16 бит).

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

К од знака

3. Получим внутренне представление модуля числа.

0000 0000 0001 0101 - прямой код числа.

4. Найдем обратный код числа, заменив в прямом коде нули на единицы, а единицы на нули:

1111 1111 1110 1010 - обратный код.

5. Найдем дополнительный код числа, прибавив к обратному коду единицу:

1111 1111 1110 1010

+ 1

1111 1111 1110 1011 - дополнительный код.

6. Впишем дополнительный код в разрядную сетку.

1

1

1

1

1

1

1

1

1

1

1

0

1

0

1

1

Код знака

Единица в старшем разряде кодирует знак«-».