Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Гл.2 Сх..docx
Скачиваний:
19
Добавлен:
12.11.2019
Размер:
291.62 Кб
Скачать

2.3 Перевод целых и дробных чисел из одной системы счисления в другую

В процессе тестирования и отладки программ программисту часто требуется перевести число из одной системы счисления в другую. Рас­смотрим сначала перевод целых чисел в удобную систему счисления. Для человека такой системой счисления является, привычная для него, деся­тичная СС, а для машины — двоичная.

      1. Перевод числа из любой сс в десятичную сс

  • Перевод с помощью алгоритма замещения.

Для перевода чисел из любой позиционной СС в десятичную можно воспользоваться представлением для смешанных чисел (2.2). Сначала в десятичную СС переводит­ся основание той системы, из которой осуществляется перевод, а затем цифры исходного числа. Результаты подставляются в выражение (2.2). Напомним его:

А = an pn + an-1 pn-1 + an-2 pn-2 + … + a1 p1 + a0 p0 + a-1 p-1 + a-2 p-2 + … + a-m p-m

Полученная сумма дает искомый результат.

Примеры

Перевести в десятичную СС числа: С7(16), 1010(2) и 136(8):

а ) С7(16) = 12• 161 +7 • 160 = 192 + 7 = 199(10);

192 7

б) 1010(2) = 1• 23+0•22+1• 21 +0•20 = 1•8 + 1•2 = 8 + 2 = 10(10);

с) 136(8) = 1•82 + 3•81 + 6•80 = 64 + 24 + 6 = 94(10)

  • Перевод умножением (делением) на промежуточный результат

Целых чисел

Повторное умножение промежуточного результата на основание системы и сложение со значением разряда данного числа. Первый промежуточный разряд есть старший разряд числа.

Пример. Двоичное число 1101100 перевести в десятичное.

  1. -первый промежуточный результат

1 ∙2 + 1 = 3 -2-й промежуточный результат

3∙ 2 + 0 = 6 -3-й промежуточный результат

6 ∙2 + 1 = 13 -4-й промежуточный результат

13 ∙2 + 1 = 27 -5-й промежуточный результат

27 ∙2 + 0 = 54 -6-й промежуточный результат

54 ∙2 + 0 = 108 Результат перевода 1101100(2) = 108(10)

Дробных чисел

Повторное деление промежуточного результата на основание системы и сложение с разрядом данного числа. Первый промежуточный результат есть последний разряд, разделенный на основание системы.

Пример. Перевести двоичную дробь 0,01011 в десятичную.

1 :2 = 0,5

(0,5 + 1) :2 = 0.75

(0.75 + 0) :2 = 0.375

(0.375 + 1) :2 = 0.6875

(0.6875 + 0) :2 = 0.34375 Результат перевода 0,01011(2) = 0.34375 = 0.34(10)

      1. Перевод чисел из десятичной сс в любую другую сс

Рассмотрим теперь случай перевода в неудобную СС, когда все необ­ходимые действия должны проводиться в старой десятичной системе счисления.

Следовательно, вычисления сводятся к последовательному целочисленному делению за­данного числа на основание новой системы счисления.

Алгоритм перевода можно записать в виде следующей последователь­ности шагов:

  1. Разделить в целых числах заданное число А на основание р в той сис­теме, из которой переводят, и запомнить частное q и остаток а.

  2. Если частное не равно нулю, то принять его за новое число и вер­нуться к шагу 1.

  3. Если частное равно нулю, действия прекратить. Выписать остатки в порядке, обратном их получению, и принять их за цифры искомого числа. Арифметические действия по данному алгоритму произ­водят в той системе счисления, из которой число переводят.

  • Перевод в двоичную систему счисления

Вычисления удобно проводить в форме, которая ясна из следующих примеров.

Примеры:

1. Перевести число 25(10) в двоичную систему счисления:

25 |_2 Выполняем последовательное деление 25 на 2

-24 12 |_2_

1 -12 6 |_ 2

0 -6 3 |_2_ Итак, 25 {10) = 11001 (2).

0 -2 1

1

Можно также использовать следующую упрощенную форму записи вычислений: деля последовательно на основание системы р заданное чис­ло А, в левом столбце записывается частное от деления, а в правом - со­ответствующий остаток.

2. Перевести число 32(10) и 7110 в двоичную СС.

32 | 2 0 71| 2 1

16 | 2 0 35| 2 1

8 | 2 0 7| 2 1

4 | 2 0 8| 2 0

2 | 2 0 4| 2 0

1 1 32 (10) =100000(2) 2| 2 0 71(10) = 1000111(2)

  1. 1

  • Перевод в шестнадцатеричную систему счисления

Рассмотрим примеры перевода чисел из десятичной СС в шестнадцатеричную с помощью алгоритма перевода, а полученного ре­зультата - снова в десятичную СС с помощью алгоритма замещения.

Примеры.

  1. Перевести число 191(10) в шестнадцатеричную систему счисления и наоборот:

а) 191 | 16 Заменяем 11(10) на В(16), а 15(10) на F(l6). Итак, 191(10) = ВF(16).

-16_ 11

31

-16

15

6) BF(16) = (В • 161 + F • 16°) = (11 • 16 + 15 • 1) = (176 + 15) = 191(10).

  1. Перевести число 1723(10) в шестнадцатеричную систему счисления и наоборот:

а) _1723 |16

16 _107 | 16

123 96 6

112 11

11 Итак, 1723(10) = 6ВВ(16)

б) 6ВВ(16) = (6•162 + В•161 + В•16°) = (1536 + 176 + 11) = 1723(10).

  • Перевод в восьмеричную систему счисления

Пример

  1. Перевести число 1723(10) в восьмеричную систему счисления и наоборот:

а) _1723 |8

16 215 | 8

12 - 16 26 | 8_

8 55 - 24 3

43 - 48 2

- 40 7 Итак, 1723(10) = 3273(8);

3

б) 3273(8) = (3•83 + 2•82 + 7•81 + 3•80) = (1536 + 128 + 56 + 3) = 1723(10).