- •Раздел I. Основы теории множеств. Системы счисления. Комбинаторика
- •Глава 1. Множества, операции с ними. Алгебра множеств
- •1.1. Элементы и множества
- •1.2. Отображения, функции, предикаты
- •1.3. Метод математической индукции
- •1.4. Способы задания множеств
- •Перечисление
- •Задание с помощью логических функций (предикатов)
- •1.5. Предметные операции на множествах. Формула множества
- •1.6. Операции сравнения — логические операции с множествами
- •1.7. Алгебра множеств. Ее формулы, теоремы и законы
- •Глава 2. Мощность множеств
- •2.1. Мощность. Счетные множества
- •2.2. Множества мощности континуум
- •Глава 3. Бинарные отношения на множествах
- •3.1. Определение и способы задания отношений
- •3.1.1. Перечисление (список пар)
- •3.1.2. Матрица
- •3.1.3. Задание отношений при помощи предикатов
- •3.2. Аксиомы на отношениях
- •3.3. Основные типы отношений
- •3.3.1. Отношение эквивалентности
- •3.3.2. Отношение нестрогого (частичного) порядка
- •3.3.3. Отношение строгого порядка
- •3.4. Проверка типов отношений. Решение задач
- •Контрольные задания по теме
- •I. Общая теория множеств
- •Глава 4. Системы счисления
- •4.1. Позиционные системы счисления с постоянными основаниями. Представления целых чисел Рассмотрим общие правила представления количественных величин в позиционных системах счисления.
- •4.2. Переводы целых чисел в позиционных системах счисления
- •4.2.1. Перевод целых чисел из произвольной системы с постоянным основанием р 10 в десятичную систему
- •4.2.2. Перевод целых чисел из десятичной системы счисления в системы с произвольными постоянными основаниями p 10
- •4.2.5. Представление двоичной байтовой информации в шестнадцатеричной и десятичной системах
- •4.3. Дробные и смешанные числа в позиционных системах счисления с постоянными основаниями
- •4.3.1 Перевод правильных десятичных дробей в систему счисления с иным основанием p 10
- •4.3.2 Перевод правильных дробей из системы с основанием p 10 в десятичную систему счисления
- •4.4. Арифметические действия с целыми числами в системах с произвольными основаниями. Их компьютерное представление
- •4.4.1 Сложение
- •4.4.2 Вычитание
- •4.4.3. Прямой и дополнительный коды целых чисел. Их представление в памяти компьютера, сложение и вычитание
- •4.5. Двоичные (булевы) векторы
- •4.6. Смешанные позиционные системы счисления. Факториальная система
- •4.6.1. Перевод целых чисел из десятичной системы в смешанную с основаниями р0, р1, ... , рk
- •Глава 5. Комбинаторика
- •5.1. Основная задача комбинаторики. Характеристики комбинаторных задач
- •5.2. Основные правила подсчета чисел комбинаторных множеств
- •5.2.1. Правило сложения
- •5.2.2. Формула включений-исключений
- •5.2.3. Правило умножения
- •5.2.4. Правило учета сходства и различия
- •5.3. Размещения (размещения с повторениями)
- •5.4. Перестановки и размещения без повторений различных объектов. Упорядоченность перестановок
- •5.5. Перестановки и размещения без повторений групп одинаковых объектов
- •5.6. Сочетания
- •5.7. Понятие вероятности
- •Контрольные задания по теме
- •II. Системы счисления. Комбинаторика
4.4.2 Вычитание
Если числа представлены в разных системах счисления, их предварительно необходимо привести в одну систему счисления. Как и при сложении, записываем одно число под другим таким образом, чтобы разряды с одинаковыми номерами располагались друг под другом. При вычитании большего числа из меньшего результату присваиваем знак «–» и меняем числа местами. Вычитание производим поразрядно, передвигаясь от нулевого разряда к старшим. Если из меньшего числа в разряде вычитается большее, занимаем из следующего старшего разряда одну единицу, равную p единицам текущего разряда.
Пример 4. Вычесть число 8BA3916 из C5D16.
Решение. Так как большее число вычитается из меньшего, присваиваем результату знак «–» и меняем числа местами. Вверху указываем единицы, занимаемые из старших разрядов.
111
8BA39
– C5D
8ADDC
Действия в разрядах:
разряд 0 (занимаем единицу в разряде 1): 916 + 1016 – D16 = = 910 + 1610 – 1316 = 1210 = C16;
разряд 1 (занимаем единицу в разряде 2): 216 + 1016 – 516 = 210 + 1610 – 510 =1310 = D16;
разряд 2 (занимаем единицу в разряде 3): 916 + 1016 – C16 = = 910 + 1610 – 1210 = 1310 = D16;
разряд 3: A16;
разряд 4: 816.
Ответ:C5D16 – 8BA3916 = –8ADDC16.
4.4.3. Прямой и дополнительный коды целых чисел. Их представление в памяти компьютера, сложение и вычитание
В электронной памяти числа всех типов (логические, целые (беззнаковые и со знаком), вещественные) всегда занимают целое число байтов. Минимальный объем памяти, занимаемый одним числом, равен одному байту (8 битам).
В формате “беззнаковое целое число” запись положительного целого числа представляет собой его двоичный код, размещенный в байтах, отведенных для него. При этом в одном байте можно разместить двоичные коды всех положительных чисел от 0 (00000000) до 28–1 = +255 (11111111). Например, 001000102 = +3410, 110011002 = +20410.
В формате “целое число со знаком” знак числа всегда задается в старшем разряде старшего байта: он равен 0 у положительных чисел и 1 у отрицательных. Остальные разряды записи заполняются в зависимости от типа кода. Основными являются прямой код и дополнительный.
Прямой код – это такое представление целого числа со знаком, в котором старший разряд старшего байта отводится под знак числа, а все оставшиеся разряды – под двоичную запись его абсолютной величины (модуля). Например, для однобайтового представления знак помещается в старшем разряде 7, а модуль – в разрядах с 0 по 6: 000010102 = +1010, 100010102 = –1010. При этом диапазон значений охватывает от (–12710) = 111111112 до (+12710) = 011111112.
Для общности прямым кодом беззнакового целого числа можно считать его двоичную запись. Сложение байтовых беззнаковых целых чисел производится по модулю числа 28 = 256. При этом единичные значения, возникающие в разряде 8, выходящем за состав байта, отбрасываются. Например:
100101102 + 011101112 = 1 000011012 = 000011012 (mod 28).
Это свойство используется у беззнаковых целых чисел для замены операции вычитания операцией сложения чисел по следующему правилу:
a – b (mod 28) = a + (–b)(mod 28) = a + (28 – b)(mod 28).
Выражение (28–b) называют дополнительным кодом отрицательного числа (–b), соответствующего байтовому беззнаковому числу b. Его можно получить:
1) инвертированием двоичной записи всех разрядов числа b (при котором получается число вида 28 – 1 – b) и последующим
2) прибавлением к нему 1, после чего получаем искомую величину (28 – b).
Дополнительный код положительного числа совпадает с прямым.
Пример 5. Выполнить вычитание (10 – 37) байтовых беззнаковых чисел с использованием дополнительного кода. Найти результат в дополнительном коде, а также его модуль в прямом коде.
Решение. Прямой двоичный код беззнакового числа 10 равен 000010102. Прямой код числа 37 равен 001001012. Найдем его дополнительный код:
Инверсия всех разрядов: 110110102. Добавление единицы: 110110112.
Результат сложения: 000010102 + 110110112 = 111001012.
Так как большее число вычиталось из меньшего, ответ отрицательный. Для определения абсолютной величины ответа переведем его в прямой код.
Вычитание: 111001002. Инвертирование: 000110112.
Полученное значение модуля результата равно 2710.
Ответ:а)111001012, б)000110112.
Пример 6. Выполнить вычитание (144 – 17) байтовых беззнаковых чисел с использованием дополнительного кода. Найти результат в дополнительном и прямом кодах.
Решение. Прямой двоичный код беззнакового числа 144 равен 100100002. Прямой код числа 17 равен 000100012. Найдем его дополнительный код:
Инверсия всех разрядов: 111011102. Добавление единицы: 111011112.
Результат сложения: 100100002 + 111011112 = 011111112.
Так как из большего числа вычиталось меньшее, ответ положительный. При этом результат получается в прямом коде, который совпадает с дополнительным. Полученное число равно 12710.
Ответ:а)011111112, б)011111112.
Сложение байтовых целых чисел со знаком производится по модулю числа 27 = 128 (без учета старшего знакового разряда). При этом единичные значения, возникающие в знаковом старшем разряде 7, отбрасываются. Выражение (27 – b) является дополнительным кодом отрицательного числа со знаком, равного (–b). Практически дополнительный код отрицательного числа со знаком (–b) получается следующим образом:
1) занесением в старший знаковый разряд 7 значения 1, означающего отрицательное число;
2) инвертированием двоичной записи всех разрядов числа b помимо знакового старшего (при котором в данных разрядах будет получена запись числа 27 – 1 – b) и 3) прибавлением 1 к полученному в младших разрядах числу, после чего получаем в них искомую величину (27 – b).
При сложении чисел с одинаковым знаком этот же знак присваивается и результату. При сложении чисел с разными знаками в качестве знака результата принимается знак большего по модулю складываемого числа. Например, вычитание целых со знаком чисел (9610 – 2210) можно представить в виде сложения прямого кода первого числа с дополнительным кодом числа (–2210), причем знак результата совпадает со знаком большего по модулю первого числа. Учитывая, что дополнительный код числа (–2210) = 11010102, получим:
9610 – 2210 = 9610 + (–22)10 = 011000002 + 111010102 = 010010102= 7410.
Двоичное 8-ми разрядное число со знаком в дополнительном коде может представлять любое целое в диапазоне от −128 до +127. Если результат вычитания является отрицательным числом, то он получается в дополнительном коде и для оценки модуля результата его переводят в прямой код.
Примеры байтового представления целых чисел со знаком:
Десятичное представление |
Код байтового двоичного представления целых чисел со знаком | |
прямой |
дополнительный | |
127 |
01111111 |
01111111 |
1 |
00000001 |
00000001 |
0 |
00000000 |
00000000 |
−0 |
10000000 |
00000000 |
−1 |
10000001 |
11111111 |
−3 |
10000011 |
11111101 |
−7 |
10000111 |
11111001 |
−8 |
10001000 |
11111000 |
−10 |
10001010 |
11110110 |
−127 |
11111111 |
10000001 |
−128 |
--- |
10000000 |
Пример 7. Представить байтовое отрицательное число со знаком (−21) в а) прямом и б) дополнительном кодах.
Решение. Прямой код отрицательного числа со знаком (−21) равен его двоичной записи с единицей в старшем разряде: 100101012. Строим дополнительный код:
Инверсия его разрядов 0–6: 111010102.
Добавление единицы: 111010112.
Ответ:а)100101012, б)111010112.
Пример 8. Найти в дополнительном и прямом кодах результат вычитания (5 – 21) байтовых целых чисел со знаком с использованием дополнительного кода.
Решение. Из примера 7 берем дополнительный код отрицательного числа со знаком (−21): 111010112. Выполняя его сложение с прямым кодом положительного числа 5, получим дополнительный код итогового числа.
00000101
+11101011
11110000
Полученный дополнительный код переводим в прямой: Вычитание единицы: 111011112. Инверсия его разрядов 0–6: 100100002.
Получен прямой код отрицательного числа (–16).
Ответ:а)111100002, б)100100002.