- •Лекция 2. Системы счисления План:
- •1. Позиционные системы счисления
- •2. Двоичная система счисления. Преобразование чисел и правила выполнения арифметических действий над двоичными числами
- •Преобразование двоичных чисел в десятичные
- •Преобразование десятичных чисел в двоичные
- •Примеры записи натуральных чисел от 1 до 16
- •4. Перевод чисел из одной системы счисления в другую
- •Для преобразования чисел, представленных в двоичной, восьмеричной и шестнадцатеричной системах счисления в десятичную необходимо записать число в развернутой форме согласно формулы:
- •5. Арифметические действия с шестнадцатеричными числами
- •6. Перевод дробных чисел из одной системы счисления в другую
- •7. Прямой и дополнительный код
6. Перевод дробных чисел из одной системы счисления в другую
Можно сформулировать алгоритм перевода правильной дроби с основанием p в дробь с основанием q:
1. Основание новой системы счисления выразить цифрами исходной системы счисления и все последующие действия производить в исходной системе счисления.
2. Последовательно умножать данное число и получаемые дробные части произведений на основание новой системы до тех пор, пока дробная часть произведения не станет равной нулю или будет достигнута требуемая точность представления числа.
3. Полученные целые части произведений, являющиеся цифрами числа в новой системе счисления, привести в соответствие с алфавитом новой системы счисления.
4. Составить дробную часть числа в новой системе счисления, начиная с целой части первого произведения.
Пример 5. Перевести число 0,6562510 в восьмеричную систему счисления.
-
0,
65625
* 8
5
25000
* 8
2
00000
Получаем: 0,6562510=0,528
Пример 6. Перевести число 0,6562510 в шестнадцатеричную систему счисления.
-
0,
65625
* 16
10
(А)
50000
* 16
8
00000
Получаем: 0,6562510=0,А81
Пример 7. Перевести десятичную дробь 0,562510 в двоичную систему счисления.
-
0,
5625
* 2
1
1250
* 2
0
2500
* 2
0
5000
* 2
1
0000
Получаем: 0,562510=0,10012
Пример 8. Перевести в двоичную систему счисления десятичную дробь 0.710.
-
0,
7
*2
1
4
*2
0
8
*2
1
6
*2
1
2
. . .
Очевидно, что этот процесс может продолжаться бесконечно, давая все новые и новые знаки в изображении двоичного эквивалента числа 0,710. Так, за четыре шага мы получаем число 0,10112, а за семь шагов число 0,10110012, которое является более точным представлением числа 0,710 в двоичной системе счисления, и т.д. Такой бесконечный процесс обрывают на некотором шаге, когда считают, что получена требуемая точность представления числа.
7. Прямой и дополнительный код
Дополнительный код положительного числа совпадает с его прямым кодом. Прямой код целого числа может быть получен следующим образом: число переводится в двоичную систему счисления, а затем его двоичную запись слева дополняют таким количеством незначащих нулей, сколько требует тип данных, к которому принадлежит число. Например, если число 3710= 1001012 объявлено величиной типа Integer, то его прямым кодом будет 0000000000100101, а если величиной типа Longlnt, то прямой код будет 00000000000000000000000000100101.
Для более компактной записи чаще используют шестнадцатеричный код. Полученные коды можно переписать соответственно как 002516 и 0000002516. Дополнительный код целого отрицательного числа может быть получен по следующему алгоритму:
1) записать прямой код модуля числа;
2) инвертировать его (заменить единицы нулями, нули — единицами);
3) прибавить к инверсному коду единицу.
Например, запишем дополнительный код числа (—37), интерпретируя его как величину типа Longlnt:
1) прямой код числа 37 есть 00000000000000000000000000100101;
2) инверсный код 11111111111111111111111111011010;
3) дополнительный код 11111111111111111111111111011011 или FFFFFFDB16.
При получении числа по его дополнительному коду прежде всего необходимо определить его знак. Если число окажется положительным, то просто перевести его код в десятичную систему счисления. В случае отрицательного числа необходимо выполнить следующий алгоритм:
1) вычесть из кода числа 1;
2) инвертировать код;
3) перевести в десятичную систему счисления. Полученное число записать со знаком минус.
Примеры. Запишем числа, соответствующие дополнительным кодам:
а) 0000000000010111. Поскольку в старшем разряде записан нуль, то результат будет положительным. Это код числа 23;
б) 1111111111000000. Здесь записан код отрицательного числа. Исполняем алгоритм:
1) 11111111110000002 - 12= 11111111101111112
2) 0000000001000000;
3) 10000002 = 642.
Ответ: —64.