
- •Омский государственный технический университет
- •1. Из истории развития систем счисления
- •Пальцевый счет
- •1.2. Древнеегипетская система счисления
- •Вавилонская система счисления
- •1.4. Системы счисления, основанные на позиционном принципе
- •1.5. Системы счисления Древней Греции
- •1.6. Римская система счисления
- •1.7. Древнеславянская система счисления
- •2. Позиционная система счисления
- •2.1. Представление произвольного числа в позиционной системе счисления
- •2.2. Двоичная система счисления
- •2.3. Восьмеричная система счисления
- •2.4. Шестнадцатеричная система счисления
- •2.5. Перевод чисел в систему с кратным основанием
- •2.6. Перевод правильной дроби
- •Задания для самостоятельной работы №1
- •1. Перевести данное число из десятичной системы счисления в двоичную, восьмеричную и шестнадцатеричную системы счисления.
- •2. Перевести данное число в десятичную систему счисления.
- •Контрольная работа №1
- •3. Двоичная арифметика
- •3.1. Сложение двоичных чисел
- •3.2. Вычитание двоичных чисел
- •3.3. Умножение в двоичной системе счисления
- •3.4. Деление двоичных чисел
- •4. Формы представления чисел в эвм
- •4.1. Числа с фиксированной запятой
- •4.2. Числа с плавающей запятой
- •4.3. Сложение (вычитание) чисел с плавающей запятой
- •4.4. Умножение чисел с плавающей запятой
- •4.5. Прямой код
- •4.6. Обратный код
- •1 0111111111111111 – Обр. Код второго числа
- •4.7. Дополнительный код
- •4.8. Признак переполнения разрядной сетки
- •4.9. Правило перевода из дополнительного кода в десятичную систему
- •4.10. Модифицированные коды
- •5. Форматы чисел в эвм
- •Задания для самостоятельной работы №2
- •Контрольная работа №2.2
- •Контрольная работа №2.3
- •Контрольная работа №2.4
- •6. Кодирование алфавитно-цифровой информации
- •6.1. Параметры алфавитно-цифровой информации
- •6.3. Стандарты кодирования символов ansi, кои-8 и unicode
- •7. Двоично-десятичные коды
- •7.2. Коды с избытком
- •7.5. Действия над двоично-десятичными числами
- •7.6. Сложение двоично-десятичных чисел
- •7.7. Вычитание модулей двоично-десятичных чисел
- •7.8. Умножение модулей двоично-десятичных чисел
- •8. Код грея
- •8.1. Строение кода Грея
- •8.2. Использование кода Грея
- •8.3. Алгоритмы преобразования кода Грея
- •9. Погрешности вычислений
- •9.1. Источники погрешностей
- •9.2. Абсолютная и относительная погрешности
- •9.3. Десятичная запись приближенных чисел Значащая цифра числа. Верная значащая цифра
- •9.4. Распространение ошибок
- •9.5. Правила подсчета цифр
- •9.6. Общие рекомендации, позволяющие уменьшить погрешность вычислений
- •9.7. Ошибки в программах, связанные с особенностью выполнения арифметических операций
- •10. Представление графической информации
- •10.1. Текстовый режим
- •10.2. Графический режим
- •10.3. Растровое графическое изображение
- •10.4. Векторная графика
- •10.5. Форматы графических файлов
- •11. Представление звуковой информации
- •11.1. Цифро-аналоговое и аналого-цифровое преобразование звуковой информации
- •11.2. Компрессия звука
- •11.3. Формат Microsoft riff
- •11.6. Midi-форма звука
- •11.7. Аппаратные синтезаторы
- •11.8. Альтернативы звука в эвм
- •11.9. Звуковые платы
- •Задачи для самостоятельной работы
- •Приложение 3
- •Содержание
- •Литература
3.3. Умножение в двоичной системе счисления
Для того, чтобы умножить двоичное число на 2 (десятичная двойка это 10 в двоичной системе) достаточно к умножаемому числу справа приписать один ноль.
Пример 3.3. Выполнить операцию умножения 10101 * 10 = 101010.
Проверка.
10101 = 1*24 + 0*23 + 1*22 + 0*21 +1*20 = 16 + 4 + 1 = 21
101010 =1*25 + 0*24 + 1*23 + 0*22 +1*21 +0*20 = 32 + 8 + 2 = 42
21 * 2 = 42.
Если вспомнить, что любое двоичное число разлагается по степеням двойки, то становится ясно, что умножение в двоичной системе счисления сводится к умножению на 10 (то есть на десятичную 2), а стало быть, умножение это ряд последовательных сдвигов. Общее правило таково: как и для десятичных чисел, умножение двоичных выполняется поразрядно. И для каждого разряда второго множителя к первому множителю добавляется один ноль справа.
Пример 3.4. Выполнить операцию умножения 1011 * 101.
Умножение можно свести к сумме трёх поразрядных умножений:
1011 * 1 + 1011 * 0 + 1011 * 100 = 1011 +101100 = 110111.
В столбик это же самое можно записать так:
|
|
1 |
0 |
1 |
1 |
|
* |
|
1 |
0 |
1 |
|
|
1 |
0 |
1 |
1 |
|
0 |
0 |
0 |
0 |
|
1 |
0 |
1 |
1 |
|
|
1 |
1 |
0 |
1 |
1 |
1 |
Проверка:
101 = 5 (десятичное)
1011 = 11 (десятичное)
110111 = 55 (десятичное)
5*11 = 55 верное равенство
Умножение двоичных многоразрядных чисел производится путём образования частичных произведений и последующего их суммирования. В соответствии с таблицей двоичного умножения каждое частичное произведение равно нулю, если в соответствующем разряде множителя стоит 0, или равно множимому, сдвинутому на соответствующее число разрядов влево, если в соответствующем разряде множителя стоит 1. Таким образом, операция умножения сводится к операциям сдвига и сложения. Положение точки определяется так же, как и при умножении десятичных чисел.
Пример 3.5. Выполнить операцию умножения 1010.1 на 101.01.
3.4. Деление двоичных чисел
При делении двоичных чисел используются таблицы двоичного умножения и вычитания.
Пример 3.6. Выполнить деление двоичного числа 1010.101 на двоичное число 10.1:
Деление выполняется по тем же правилам, что и деление в десятичной системе счисления.
Выше были рассмотрены три действия и уже понятно, что, в общем-то, действия над двоичными числами мало отличаются от действий над десятичными числами. Разница появляется только в том, что цифр две, а не десять, но это только упрощает арифметические операции. Так же обстоит дело и с делением, но для лучшего понимания алгоритм деления разберём более подробно. Пусть нам необходимо разделить два десятичных числа, например 234 разделить на 7.
2 |
3 |
4 |
7 |
|
|
|
|
|
|
Выделяем справа (от старшего разряда) такое количество цифр, чтобы получившееся число было как можно меньше и в то же время больше делителя. 2 – меньше делителя, следовательно, необходимое нам число 23. Затем делим полученное число на делитель с остатком. Получаем следующий результат:
|
2 |
3 |
4 |
7 |
|
– |
2 |
1 |
|
3 |
|
|
|
2 |
4 |
|
|
Описанную операцию повторяем до тех пор, пока полученный остаток не окажется меньше делителя. Когда это случится, число, полученное под чертой, это частное, а последний остаток – это остаток операции. Операция деления двоичного числа выполняется точно также.
Пример 3.7. Разделить 10010111(2) на 101(2).
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
Ищем число, от старшего разряда которое первое было бы больше чем делитель. Это четырехразрядное число 1001. Оно выделено жирным шрифтом. Теперь необходимо подобрать делитель выделенному числу. И здесь мы опять выигрываем в сравнении в десятичной системой. Дело в том, что подбираемый делитель это обязательно цифра, а цифры у нас только две. Так как 1001 явно больше 101, то с делителем всё понятно это 1. Выполним первый шаг операции.
|
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
– |
|
1 |
0 |
1 |
|
|
|
|
1 |
|
|
|
|
1 |
0 |
0 |
|
|
|
|
|
|
|
Остаток от выполненной операции 100. Это меньше чем 101, поэтому чтобы выполнить второй шаг деления, необходимо добавить к 100 следующую цифру, это цифра 0. Теперь имеем следующее число:
|
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
– |
|
1 |
0 |
1 |
|
|
|
|
1 |
|
|
|
|
1 |
0 |
0 |
0 |
|
|
|
|
|
|
1000 больше 101 поэтому на втором шаге мы опять допишем в частное цифру 1 и получим следующий результат (для экономии места сразу опустим следующую цифру).
|
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
– |
|
1 |
0 |
1 |
|
|
|
|
1 |
1 |
|
|
|
1 |
0 |
0 |
0 |
|
|
|
|
|
|
|
– |
|
1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
1 |
1 |
0 |
|
|
|
|
|
Третий шаг. Полученное число 110 больше 101, поэтому и на этом шаге мы запишем в частное 1. Получиться так:
|
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
– |
|
1 |
0 |
1 |
|
|
|
|
1 |
1 |
1 |
|
|
1 |
0 |
0 |
0 |
|
|
|
|
|
|
|
– |
|
1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
1 |
1 |
0 |
|
|
|
|
|
|
|
|
– |
1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
|
|
|
|
Полученное число 11 меньше 101, поэтому записываем в частное цифру 0 и опускаем вниз следующую цифру. Получается так:
|
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
|
1 |
0 |
1 |
|
|
– |
|
1 |
0 |
1 |
|
|
|
|
|
1 |
1 |
1 |
0 |
|
|
|
1 |
0 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
– |
|
1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
– |
1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
1 |
|
|
|
|
|
|
Полученное число больше 101, поэтому в частное записываем цифру 1 и опять выполняем действия. Получается такая картина:
|
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
|
1 |
0 |
|
|
|
– |
|
1 |
0 |
1 |
|
|
|
|
|
1 |
1 |
1 |
0 |
1 |
|
|
1 |
0 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
– |
|
1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
– |
1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
1 |
|
|
|
|
|
|
|
|
|
|
|
– |
1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
0 |
|
|
|
|
|
|
Полученный остаток 10 меньше 101, но у нас закончились цифры в делимом, поэтому 10 это остаток, а 1110 это искомое частное.
Проверим в десятичных числах
10010011 = 147
101 = 5
10 = 2
11101 = 29
|
1 |
4 |
7 |
5 |
|
– |
1 |
0 |
|
2 |
9 |
|
|
4 |
7 |
|
|
|
– |
4 |
5 |
|
|
|
|
|
2 |
|
|
Запись числа в двоичной системе существенно упрощает арифметические операции, но в то же время сама запись становится значительно длиннее, что уменьшает ценность полученного упрощения, поэтому необходимо найти такие задачи, решение которых существенно проще в двоичных числах.