Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
учебник.docx
Скачиваний:
45
Добавлен:
27.03.2015
Размер:
3.39 Mб
Скачать

4.1.2. Форматы хранения целых чисел со знаком

↑ Наверх

Целые числа со знаком, как и беззнаковые, обычно занимают в памяти компьютера 1, 2 или 4 байта, при этом самый левый (старший) разряд содержит информацию о знаке числа. Знак «+» кодируется нулем, а «-» – единицей. Таким образом, под само число отводится семь разрядов: с нулевого до шестого.

Диапазоны значений целых чисел со знаком для одно-, двух- и четырехбайтового форматов приведены в табл. 4.2.

Таблица 4.2. Диапазоны значений целых чисел со знаком

Формат целого числа со знаком, байт

Диапазон

Запись с порядком

В обычной записи

1

-27 ... 27-1

-128 ... 127

2

-215 ... 215-1

-32768 ... 32767

4

-231 ... 231-1

-2147483648 ... 2147483647

В компьютерной технике применяются три формы записи (кодирования) целых чисел со знаком: прямой код, обратный код, дополнительный код. Последние две формы применяются особенно широко, так как позволяют упростить конструкцию арифметико-логического устройства компьютера путем замены разнообразных арифметических операций операцией сложения.

Рассмотрим перечисленные форматы на примере однобайтового представления.

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

Пример 4.2. Число 4510 = 1011012. Так как число положительное, то в старшем разряде стоит 0. Число 45 в прямом, обратном и дополнительном кодах выглядит одинаково:

Биты числа

0

0

1

0

1

1

0

1

Номер разряда

7

6

5

4

3

2

1

0

Отрицательные числа в прямом, обратном и дополнительном кодах имеют разное изображение.

Прямой код. В знаковый разряд помещается цифра 1, а в разряды цифровой части числа – двоичный код его абсолютной величины.

Пример 4.3. Число -4510 = -1011012. Так как число отрицательное, то в старшем разряде стоит 1:

Биты числа

1

0

1

0

1

1

0

1

Номер разряда

7

6

5

4

3

2

1

0

Обратный код получается инвертированием всех цифр двоичного кода абсолютной величины числа: нули заменяются единицами, а единицы — нулями. В знаковом разряде ставится 1.

Пример 4.3 (продолжение 1). Абсолютная величина: 0101101, после инвертирования: 1010010. Получаем обратный код числа:

Биты числа

1

1

0

1

0

0

1

0

Номер разряда

7

6

5

4

3

2

1

0

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

Пример 4.3  (продолжение 2). Мы уже имеем обратный код, прибавим к нему 1, получим дополнительный код числа -4510:

Биты числа

1

1

0

1

0

0

1

1

Номер разряда

7

6

5

4

3

2

1

0

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