Добавил:
Меня зовут Катунин Виктор, на данный момент являюсь абитуриентом в СГЭУ, пытаюсь рассортировать все файлы СГЭУ, преобразовать, улучшить и добавить что-то от себя Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика / Лекции / Лек2_Сист_сч.doc
Скачиваний:
20
Добавлен:
03.08.2023
Размер:
296.45 Кб
Скачать

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.

Соседние файлы в папке Лекции