Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методическое пособие 166

.pdf
Скачиваний:
2
Добавлен:
30.04.2022
Размер:
504.55 Кб
Скачать

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

0

 

 

 

 

 

0

10011001110101111,10011001111

= 231657,46368

2 3 1 6 5 7 , 4 6 3 6

 

000

 

 

 

 

 

0

 

10011001110101111, 10011001111 = 133AF,99E16

1

3

3

A

F , 9

9

E

Перевод восьмеричных и шестнадцатеричных чисел в двоичную систему проводится в обратном порядке: каждая цифра заменяется эквивалентной ей двоичной триадой (тройкой битов) или тетрадой (четверкой битов), не меняя порядка их расположения. Например, 7А5В16 = 0111 1010 0101 10112.

Задания для самостоятельной работы

1. Записать числа в двоичной и восьмеричной системах

счисления:

 

 

 

 

а) 7510;

б) 18410;

в) 23110;

г) 15210;

д) 23310;

е) 89,1410;

ж) 199,6310;

з) 37,81510;

и) 244,3610; к) 95,610.

2. Записать числа в двоичной и шестнадцатеричной сис-

темах счисления:

 

 

 

а) 5210;

б) 24910;

в) 16610;

г) 20210;

д) 14310;

е) 48,4810;

ж) 127,3810;

з) 227,1610;

и) 174,6910; к) 77,210.

3. Записать числа в двоичной и десятичной системах

счисления:

 

 

 

 

а) 3518;

б) 62138;

в) 4263,1728; г) 2427,3518; д)26,158;

е) 2СЕ716;

ж) 9F3516;

з) B84D,6916; и) 7A41,9C16; к) 91,2B16.

9

Занятие 3 Представление в компьютере целых чисел со знаком

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

Диапазоны значений целых чисел

Размер числа

 

Знак

Диапазон

в байтах

 

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

Обычная запись

 

 

1

 

нет

0 … 28 – 1

0 ... 255

1

 

есть

–27 … 27 – 1

–128 … 127

2

 

нет

0 … 216 – 1

0 ... 65535

2

 

есть

–215 … 215 – 1

–32768 … 32767

4

 

нет

0 … 232 – 1

 

4

 

есть

–231 … 231 – 1

 

Например,

число 7210 = 10010002 в однобайтовом форма-

те:

Это же число в двухбайтовом формате:

В целых числах со знаком самый старший (левый) разряд содержит информацию о знаке числа. Знак «плюс» кодируется нулем, а «минус» – единицей.

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

10

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

Последняя форма – двоичный дополнительный код (ДДК)

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

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

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

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

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

2.Обратный код. Получается обращением (инвертированием) всех битов прямого кода, кроме разряда знака: нули заменяются единицами, а единицы – нулями. Например:

3.Дополнительный код (ДДК). Получается из обратно-

го кода путем сложения его с числом 1. Например:

11

Очевидно, что ДДК числа –12810 равен 100000002.

На практике обратный код отрицательного числа получают обычно из двоичного кода модуля, дополненного до 8 бит, обращая все его разряды (т.е. минуя прямой код). Например:

2810 = 00111000

–2810 = 11000111 (обратный код).

Если исходное число четное, то при получении ДДК сложение с единицей будет давать переносы в следующий разряд:

1 1 1

+11000111 1

11001000 (ДДК).

Итак, ДДК числа –2810 равен 110010002.

Задания для самостоятельной работы

1. Получить ДДК следующих чисел (использовать фор-

мат длиной в восемь бит):

 

 

 

а) –1910;

б) –4010;

в) –3110;

г) –7810;

д) –6410;

е) –10010;

ж) –12510;

з) –9310;

и) –11410;

к) –8710.

л) –1610;

м) –6010;

н) –7110;

о) –12010;

п) –9610.

12

Занятие 4 Представление в компьютере вещественных чисел

Для удобства отображения чисел, принимающих значения из достаточно широкого диапазона (то есть, как очень маленьких, так и очень больших), используется форма записи чисел с порядком основания системы счисления. Например, десятичное число 1.25 можно в этой форме представить так:

1.25 100 = 0.125 101 = 0.0125 102 = ... ,

или так:

12.5 10–1 = 125.0 10–2 = 1250.0 10–3 = ... .

Любое число N в системе счисления с основанием q мож-

но записать в виде

N = M q p,

где M называется мантиссой числа, а p порядком (или характеристикой). Такой способ записи чисел называется представ-

лением с плавающей точкой.

При решении задач удобно мантиссу q-ичного числа записывать в системе с основанием q, а само основание q и порядок p – в десятичной системе.

Если в мантиссе после точки стоит не нуль, то число называют нормализованным справа. Тогда при фиксированном количестве разрядов, отведѐнных под мантиссу, обеспечивается запись максимального количества значащих цифр числа, то есть максимальная точность представления числа в машине. Из этого следует, что мантисса должна быть правильной дробью, первая цифра которой отлична от нуля: M [0.1, 1).

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

– с использованием четырех, шести, восьми или десяти байтов (см. таблицу).

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

13

Формат

Размер

 

Диапазон

Точность

в байтах

 

 

 

(десятичных знаков)

 

 

 

 

Одинарный

4

1,5

10–45

… 3,1 1038

7 - 8

 

6

2,9

10–39

… 1,7 1038

11 - 12

Двойной

8

5 10–324 … 1,710308

15 - 16

Расширенный

10

3,4

10–4932 … 1,1 104932

19 - 20

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

Порядок числа может изменяться от –127 до 128. Чтобы он был всегда положительным, его хранят увеличенным на 127. Такое представление порядка называют смещенным:

pсмещ = p + 127.

При хранении числа с плавающей точкой в 32-битной кодировке отводятся разряды для знака числа (1 разряд), смещенного порядка (8 разрядов), и мантиссы (23 разряда):

Например, число –0,062510 = –0,00012 = –1,0 2–4 разместится в памяти компьютера следующим образом:

1 0 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Здесь первый слева бит, равный 1, означает, что число

отрицательное. Следующие 8 бит – это pсмещ = –4 + 127 = 12310 = = 011110112, а мантисса целиком состоит из нулей.

Задания для самостоятельной работы

1. Записать в 32-битовом формате следующие числа:

а) 0,37510; б) –1,010; в) –17,7510; г) 0,000510; д) 177010;

е) –90,12510; ж) 77,4210; з) –2045,1110; и) 640,2510; к) –0,0910.

14

Занятие 5 Арифметические операции над двоичными числами

Операции над двоичными числами делятся на три группы

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

К этой группе относится операция сложения. Операция вычитания в большинстве компьютеров не используется, вместо нее производится сложение уменьшаемого с ДДК вычитаемого. Это позволяет существенно упростить конструкцию АЛУ.

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

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

Сложение двоичных чисел производится по следующим правилам: 0+0=0, 0+1=1, 1+0=1, 1+1=10 (т.е. имеет место перенос в старший разряд).

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

При сложении ненулевых чисел А и В имеют место четыре основных и два особых случая:

1. А и В положительные, и А+В <128. Например:

Получен правильный результат: 000010102 = 1010. 2. А > 0, B < 0, и В > A. Например:

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

10000110 + 1 = 10000111 = –710.

15

3. А > 0, B < 0, и В < A. Например:

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

4. А и В отрицательные, и А+В ≤ 128. Например:

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

К особым случаям относятся ситуации, когда А и В по-

ложительные и сумма А+В 2n–1, где n – количество разря-

дов (для однобайтового формата n = 8, 2n–1 = 27 = 128), или ко-

гда А и В отрицательные и А + Вбольше 2n–1. При сложе-

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

Задания для самостоятельной работы

1. Сложить числа в двоичной системе. Сделать проверку.

а) 10001012 и 11000112; б) 10111012 и 1001112.

2. Сложить числа в двоичной системе. Сделать проверку.

а) 2910 и 6610; б) 5710 и –6810; в) 7410 и –6210; г) –6010 и –4410;

д) 3810 и 8210; е) 9110 и –11610; ж) 10110 и –8710; з) –3910 и –7010.

16

Занятие 6 Сдвиговые операции над двоичными числами

С их помощью в большинстве компьютеров реализуются операции умножения и деления целых чисел на числа, равные степени 2 (2, 4, 8, 16, 32, 64 и т.д.). Эти операции носят общее название «битовый сдвиг».

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

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

1)Логический сдвиг

это сдвиг, при котором уходящий бит уходит, не влияя на оставшееся биты, а на место появившегося бита записывается 0.

2)Арифметический сдвиг. При этом сдвиге слово рассматривается не просто как группа битов, а как целое число в дополнительном коде. Сдвиг влево ведѐт себя как логический сдвиг, а при сдвиге вправо уходящий бит отбрасывается, не влияя на оставшиеся биты, а на место появившегося бита ставится бит, равный знаковому биту.

Пусть у нас есть число 111110102 = −610.

При сдвиге влево на 1 бит получим 111101002 = −1210. При сдвиге вправо на 1 бит получим 111111012 = −310. Еще пример:

17

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

При сдвиге на 2 разряда получим умножение (деление) на 4, на три разряде – на 8, и т.д.

Напомним, что при делении отрицательного числа А нацело на число В берется ближайшее к А число, делящееся на В без остатка, которое находится слева от А на числовой оси. Например, –7 : 2 = –4 (и 1 в остатке), а не –3 и –1 в остатке. Именно такой результат и дает арифметический сдвиг вправо.

3) Циклический сдвиг.

При этом сдвиге уходящий бит не отбрасывается, а появляется на свободном месте с другой стороны:

4) Циклический сдвиг через бит переноса.

Вархитектуру многих процессоров входит флаг переноса

вследующий разряд. Данная операция выполняет циклический сдвиг над (n+1)-битным числом, состоящим из регистра и флага переноса.

Например, пусть у нас в регистре число 000101112, а флаг переноса С равен 1:

18