- •Тема 1. Системы счисления
- •§1. Перевод чисел из системы счисления с основанием p в десятичную систему счисления
- •§2. Перевод десятичных чисел в систему счисления по основанию p
- •2.1. Перевод целых чисел
- •2.1. Перевод дробных чисел
- •§3. Перевод чисел в системах счисления с основаниями кратными двум
- •§4. Перевод чисел с произвольными основаниями
- •Задания для самостоятельного выполнения:
- •Тема 2. Представление чисел в прямом, обратном и дополнительных кодах
- •Рекомендации по выполнению заданий для самостоятельного решения
- •Прямой код
- •Обратный код
- •Дополнительный код
- •Переполнение разрядной сетки
- •Сложение чисел в прямом, обратном и дополнительном кодах с проверкой в десятичной системе счисления
- •Задания для самостоятельного выполнения:
- •Тема 3. Алгоритмизация.
- •§4.1. Линейная структура алгоритма
- •§4.2. Структура алгоритма «цикл с предусловием»
- •§4.3. Структура алгоритма «цикл с постусловием»
- •§4.4. Структура алгоритма ветвление
- •§4.5. Структура алгоритма сокращенное ветвление
- •§4.6. Структура алгоритма множественный выбор
- •Тема 5. Смешанные структуры алгоритмов.
- •Задания для самостоятельного выполнения:
Прямой код
Прямой код соответствует обычной записи числа со своим знаком. Положительное число имеет в знаковом разряде символ 0, отрицательное – 1. Прямой код обозначают [A]пр, а знаковый разряд отделяют от цифровых разрядов точкой. Количество разрядов целой части числа обозначают n, а количество разрядов дробной части числа m. Для положительных чисел существует только прямой код.
Ч
исла
в прямом коде представляются в форме:
при А ³ 0 [A]пp = 0.an-1an-2 … a1a0,a-1 … a-m;
(
2.1 )
при А £ 0 [A]пр = 1.an-1an-2 … a1a0,a-1 … a-m ;
Число ноль в прямом коде имеет два изображения:
+ 0 : [0]пр = 0.00…0, - 0 : [0]пр = 1.00…0.
Рассмотрим случай байтового представления чисел.
Если число больше нуля, то в знаковом разряде записывают «0», а если меньше, то «1».
Пример №1. Представить числа А = 110112, В = -10102 в прямом коде.
Обратный код
Обратный код существует только для отрицательных чисел. Для получения обратного кода отрицательного числа следует в разряд с отрицательным весовым коэффициентом записать 1, а в остальных разрядах прямого кода заменить 1 на 0, а 0 на 1, т.е. инвертировать. Прямой код отрицательного числа из обратного образуется аналогично.
Ноль в обратном коде имеет два представления:
+ 0 : [0]обр = 0.00 … 0, - 0 : [0]обр = 1.11 … 1.
Пример №2
Получить обратный код для числа А = -10101,10112 при n=5, m=4.
[ A]пр = 1.10101,1011
[A]обр = 1.01010,0100
Важно заметить, что в обратном коде отрицательного числа нули, записанные в конце числа после запятой и в начале числа, после 1, отделенные точкой, отбрасывать нельзя, но можно отбрасывать записанные на этих позициях 1.
Дополнительный код
Положительные числа в прямом и дополнительном кодах имеют одинаковую форму записи. Дополнительный код отрицательного числа образуется как результат суммирования обратного кода с единицей младшего разряда.
Пример №3
Получить дополнительный код для чисел: A=+1001,101(2), B=-1000,010(2) при n=4, m=3.
[A]пр=0.1001,101 [A]пр.= [A]обр.= [A]доп
[В]пр=1.1000,010
Для образования прямого кода отрицательного числа из дополнительного кода следует вычесть единицу младшего разряда (получим обратный код) и инвертировать все разряды, т.е. заменить 1 на 0, а 0 на 1 (получим прямой код).
Рассмотренный метод неудобен тем, что содержит операцию вычитания. В ПК прямой код отрицательного числа получают путем образования дополнительного кода от дополнительного, т.е. образуется обратный код и к нему прибавляется 1 младшего разряда.
Ноль представляется в дополнительном коде:
+0: [0]доп.= 0.000…00 ,
- 0: [0]доп.=1.111 … 1
+
1
[0]доп.=0.000 … 0 ,
т.е. ноль в дополнительном коде имеет единственное представление.
Переполнение разрядной сетки
В ПК количество разрядов, используемых для представления чисел, ограничено. Поэтому если в процессе вычислений получается число, которое нельзя записать в предназначенную для него ячейку, то говорят, что возникло переполнение разрядной сетки.
Для обнаружения переполнения разрядной сетки используют следующие способы:
1. Сравнивают знаки слагаемых со знаком суммы. Сигнал переполнения вырабатывается тогда, когда знаки слагаемых одинаковы и не совпадают со знаком суммы.
2. Второй способ основан на применении модифицированных кодов. Модификация кодов заключается во введении дополнительного разряда, который располагается перед знаковым. Этот разряд часто называют разрядом переполнения. Иногда говорят, что модифицированные коды содержат два знаковых разряда. Положительные числа имеют в знаковых разрядах два нуля, отрицательные – две единицы. При использовании модифицированных обратного и дополнительного кодов признаком переполнения разрядной сетки является наличие в знаковых разрядах различных цифр 01 или 10.
Пример №4
Вычислить С = А + В в обратном коде. А = + 1101,12; В = + 1011,02; n=4, m=1.
Для вычисления сначала необходимо числа А и В перевести в прямой код. [А]пр= 0. 1101,1; [В]пр= 0.1011,0. Так как числа А и В положительные, поэтому
[А]обр = [А]пр
[В]обр = [В]пр
В этом примере единица переноса из старшего разряда попадает в знаковый разряд (с отрицательным весом) и, следовательно, в результате сложения двух положительных чисел получается отрицательное число.
При сложении отрицательных чисел в обратном или дополнительном кодах переполнение разрядной сетки наступает в том случае, если отсутствует единица переноса в разряд с отрицательным весом и результат оказывается положительным.
Пример №5
Вычислить С = А + В в дополнительном коде с проверкой в десятичной системе счисления. А = - 10112; В= - 1002; n=5, m=0.
Для вычисления необходимо А и В перевести в прямой код.
Из исходных данных видно, что числа А и В отрицательные, поэтому их необходимо сначала перевести в обратный код, а затем в дополнительный (по правилам перевода обратного и дополнительного кодов):
[А]пр=1.01011 [А]обр=1.10100 [А]доп=1.10101
[В]пр=1.00100 [В]обр=1.11011 [В]доп=1.11100
Выполним сложение А и В.
Проверка: А = - 10112 = -1110, В = - 1002 = -410, в результате должно получиться С= -15, т.е. -11(10) + (-4)10 = -15(10). Для проверки результата сложения необходимо из дополнительного кода числа С перевести в прямой код числа С, так как в результате получилось отрицательное число, что подтверждает «1» в знаковом разряде.
Поэтому [С]доп =1.10001 [С]обр = 1.01110 [С]пр= 1.01111=-15(10)
Ответ: [С]доп =1.10001
