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

В практике компьютеризации используются две основные системы счисления (обозначения) целых чисел без знака: десятичная и двоичная. Существуют достаточно простые алгоритмы перевода записи числа из одной системы счисления в другую.

Алгоритм 1. Перевод В-ной ® 10

Перевод В-ичной записи числа в десятичную запись числа

Для получения записи (d)10 числа d из записи (d)в, следует построить в системе с основанием В соответствующее каноническое выражение [е] в, представляя основание как 10;

Представляя элементы этого каноническое выражения [е]в в десятичной системе, перевести его в неканоническое выражение (е)10 десятичной системы;

Вычислить неканоническое выражение (е)10 и получить десятичную запись числа (d)10.

Примеры.

Перевод (запись числа)8 ® (запись числа)10

(d)8: запись - 8-й системы

[e]8: каноническое выражение 8-й системы

(e)10: выражение 10-й системы

(d)10: запись - 10-й системы

(125)8 =[1*102+2*101+5*100]8=(1*82+2*81+5*80)10 =(85)10

Перевод (запись числа)16 ® (запись числа)10

(d)16: запись - 16-й системы

[e]16: каноническое выражение 16-й системы

(e)10: выражение десятичной системы

(d)10: запись - десятичной системы

(125)16 =[1*102+2*101+5*100]16=(1*162+2*161+5*160)10=(293)10

Алгоритм 2. Перевод 10 ® В

Для перевода десятичной записи числа в В - ичную используются операции целочисленного деления, рис.1.6:

X mod Y - результатом является остаток от деления X на Y, X div Y - результатом является целая часть от деления X на Y.

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

Примеры.

Представить число 56 десятичной системы счисления в двоичной и 125 десятичной системы в восьмеричной системе счисления:

 
  Перевод записи числа из одной системы счисления в другую - student2.ru

Перевод (запись числа)10 ® (запись числа)2

 
  Перевод записи числа из одной системы счисления в другую - student2.ru

Рисунок 1.1 - Перевод десятичной записи числа в В-ичную запись того же числа

Перевод (запись числа)10 ® (запись числа)16

125½16 Ответ: [125]10 = [7D]16

112 7

Перевод записи числа из одной системы счисления в другую - student2.ru 13

Несмотря на достаточную простоту алгоритмов перевода чисел из одной системы кодирования в другую, “ручное” их выполнение при вводе (выводе) данных в память (из памяти) компьютера неприемлемо для человека. Поэтому используются программы, выполняющие эти действия без вмешательства человека. И рядовой пользователь компьютера, вводя и читая десятичные числа с использованием экрана дисплея, может даже не подозревать о существовании двоичной системы кодирования этих чисел.

Методика и порядок выполнения работы

1. Перевести числа из одной системы счисления в другие системы счисления:



Вариант Из 10-СС в 2 и 8 и 5 и 16-СС Из 10-СС в 2 и 8 и 5 и 16-СС Из 2-СС в 8 и 16-СС Из 10-СС в 2-СС
17510 Перевод записи числа из одной системы счисления в другую - student2.ru 0,175910 1000001012 12,33510
20910 0,209710 110010002 234,25410
31610 0,316110 11001012 1,45310
15510 0,155610 10111002 22,64610
20710 0,207110 11000012 106,36710
40110 100100002 26,02610
26110 0,261210 1100100012 2,20710
20010 0,200310 11100112 110,12310
10110 0,101510 110010102 20,58910
9210 0,927810 11110112 211,112110
9710 0,978410 311,32110
14410 0,144910 16,458110
11510 0,115710 103,09810
20210 0,202410 250,65310
12310 0,123910 1,289910
23410 0,234610 110,65410
14510 0,145710 17,50910
22610 0,226610 209,870410
10610 0,106510 316,376510
26010 0,260410 155,93210
22010 0,220110 207,23410
11010 0,110210 4,01510
20510 0,205910 26,18410
21110 0,211310 200,21310
31110 0,311210 101,375410
16110 0,161310 9,217510
10310 0,103410 97,75610
25010 0,250710 144,94110
12910 0,129610 115,86310
11010 0,110810 20,83210

2. Переведите восьмеричные и шестнадцатеричные числа в двоичную систему счисления, а из двоичной – в десятичную систему счисления.

Вариант 8-СС 16-СС Вариант 8-СС 16-СС
1АЕ2 7D5A
1С1С A1B2D
2АВ5 6F15
34Е6 ACDF
2FBD1 1F45
1375BF EDAB5
34FC1 253FA
24FD 1657FD
FDFF FFFFE
D3BF DDFDF
164F BFDE
FEDC ABDF3
642FD
AC43 F53D7
FCA4 26ABC

Вопросы для защиты работы

1. Дайте определение системе счисления. Какие системы счисления вы знаете? Охарактеризуйте их.

2. Как представляются целые неотрицательные числа?

3. Запишите алгебраическое выражение в инфиксной, префиксной, постфиксной формах.

4. Что называется разрядом числа?

5. Какие алгоритмы перевода записи числа из одной системы счисления в другую вы знаете? Сформулируйте правила перевода для каждой из них.

6. Выполните задание согласно вашему варианту.

Лабораторная работа № 2

Арифметические основы ЭВМ

Цель занятия:

1. Изучить машинные коды, нашедшие применение в вычислительных машинах.

2. Закрепить знания по выполнению арифметических операций над числами в ПК.

Теоретическое обоснование

Машинные коды

Все современные ЭВМ имеют достаточно развитую систему команд, включающую десятки и сотни машинных операций. Однако выполнение любой операции основано на использовании простейших микроопераций типа сложения и сдвиг. Это позволяет иметь единое арифметико-логическое устройство для выполнения любых операций, связанных с обработкой информации. Во всех без исключения ЭВМ все операции над числами выполняются с использованием специальных машинных кодов. Их использование позволяет обрабатывать знаковые разряды чисел так же, как и значащие разряды, а также заменять операцию вычитания операцией сложения. Различают прямой код (П), обратный код (ОК) и дополнительный код (ДП) двоичных чисел.

Прямой код. Прямой код двоичного числа образуется из абсолютного значения этого числа и кода знака (нуль или единицы) перед его старшим числовым разрядом.

Применение прямого кода.

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

Однако у прямого кода есть два недостатка:

· В прямом коде есть два варианта записи числа 0 (например, 00000000 и 10000000 в восьмиразрядном представлении).

· Использование прямого кода для представления отрицательных чисел в памяти компьютера предполагает или выполнение арифметических операций центральным процессором в прямом коде, или перевод чисел в другое представление (например, в дополнительный код) перед выполнением операций и перевод результатов обратно в прямой код (что неэффективно).

Выполнение арифметических операций над числами в прямом коде затруднено: например, даже для сложения чисел с разными знаками требуется кроме сумматора иметь специальный блок-«вычитатель», сложность реализации которого, такая же, как и обычного сумматора. Кроме того, при выполнении арифметических операций требуется особо обрабатывать значащий разряд, так как он не имеет веса. Также требуется обработка «отрицательного нуля». Таким образом, выполнение арифметических операций над числами в прямом коде потребует сложной архитектуры центрального процессора и в общем является неэффективным.

Гораздо более удобным для выполнения арифметических операций является дополнительный код.

Пример: Представить десятичные числа +10 и –15 в двоичной системе счисления и записать их соответствующие прямые коды.

Знаковый разряд имеет значение

0 – для положительных чисел;

1 – для отрицательных чисел.

Решение:

Перевод записи числа из одной системы счисления в другую - student2.ru А10 = +10, А2 = 1010, [A2]п=0:1010;

Перевод записи числа из одной системы счисления в другую - student2.ru B10 = -15, B2 = -1111, [B2]п=1:1111.

Точечной вертикальной линией (:) здесь отмечена условная граница, отделяющая знаковый разряд от значащих разрядов двоичного числа.

Обратный код. Обратный код двоичного числа образуется по следующему правилу. Обратный код положительных чисел совпадает с их прямым кодом. Обратный код отрицательного числа содержит единицу в знаковом разряде числа, а значащие разряды числа меняются на инверсные, то есть нули заменяются единицами, а единицы – нулями.

Пример: Представить десятичные числа +5 и –13 в двоичной системе счисления и записать их соответствующие обратные коды.

Решение:

А10=+5,®А2 =+101, [A2]п=[A2]ок=0:101;

В10=-13®В2 =-1101, [B2]ок =1:0010.

Свое название обратный код чисел получил потому, что коды цифр отрицательного числа заменены на инверсные. Укажем наиболее важные свойства обратного кода чисел:

• сложение положительного числа С с его отрицательным значением в обратном коде дает так называемую машинную единицу МЕок = 1 : 1 111. ..11, состоящую из единиц в знаковом и в значащих разрядах числа;

• нуль в обратном коде имеет двоякое значение. Он может быть как положительным числом — 0 : 00. ..0, так и отрицательным — 1: 111…11. Значение отрицательного нуля совпадает с МЕок. Двойственное представление нуля явилось причиной того, что в современных ЭВМ все числа представляются не обратным, а дополнительным кодом.

Дополнительный код. Дополнительный код (англ. two’s complement, иногда twos-complement) — наиболее распространённый способ представления отрицательных целых чисел в компьютерах. Он позволяет заменить операцию вычитания на операцию сложения и сделать операции сложения и вычитания одинаковыми для знаковых и беззнаковых чисел, чем упрощает архитектуру ЭВМ. Дополнительный код положительных чисел совпадает с их прямым кодом. Дополнительный код отрицательного числа представляет собой результат суммирования обратного кода числа с единицей младшего разряда (2° - для целых чисел, 2-k - для дробных чисел).

Преимущества и недостатки.

Преимущества.

Один и тот же регистр может хранить как n-битовое положительное число, так и (n−1)-битовое число со знаком, с общими для обоих форматов операциями сложения, вычитания и левого сдвига.

Более удобная упаковка чисел в битовые поля.

Отсутствие числа «минус ноль».

Недостатки.

Дополнительный код неочевиден для новичков.

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

Модуль наибольшего числа не равен модулю наименьшего числа. Пример: знаковое целое 1-байтовое. Максимальное число: 12710 == 7F16 == 011111112. Минимальное число: -12810 == 8016,дополнительный код == 100000002,дополнительный код. Соответственно, не для любого числа существует противоположное. Операция изменения знака требует дополнительной проверки.

Пример: Найти дополнительный код -710

-710=1112

Прямой код: 1 : 111

Обратный код: 1 : 000

Дополнительный код: 1 : 001 (1 : 000+1)

Пример: Представить десятичные числа +19 и –13 в двоичной системе счисления и записать их соответствующие дополнительные коды.

Решение:

А10 = + 19, ® А2 = + 10011, [A2]п = [A2]ок = [A2]дк = 0 : 10011;

В10 = -13, ® В2 = - 1101, [B2]дк = [B2]ок + 20 = 1 : 0010 + 1 = 1: 0011.

Укажем основные свойства дополнительного кода:

• сложение дополнительных кодов положительного числа С с его отрицательным значением дает так называемую машинную единицу дополнительного кода: МЕдк = МЕок + 2° = 10 : 00...00, то есть число 10 (два) в знаковых разрядах числа;

• дополнительный код получил такое название потому, что представление отрицательных чисел является дополнением прямого кода чисел до машинной единицы МЕдк.

В табл. 1 представлены прямые, обратные и дополнительные коды чисел от –710до +710.

Таблица 1

Десятичное число х Рпр(х) Робр(х) Рдоп(х )
0 : 000 0 : 000 0 : 000
0 : 001 0 : 001 0 : 001
0 : 010 0 : 010 0 : 010
0 : 011 0 : 011 0 : 011
0 : 100 0 : 100 0 : 100
0 : 101 0 : 101 0 : 101
0 : 110 0 : 110 0 : 110
0 : 111 0 : 111 0 : 111
-0 1 : 000 1 : 111 -
-1 1 : 001 1 : 110 1 : 111
-2 1 : 010 1 : 101 1 : 110
-3 1 : 011 1 : 100 1 : 101
-4 1 : 100 1 : 011 1 : 100
-5 1 : 101 1 : 010 1 : 011
-6 1 : 110 1 : 001 1 : 010
-7 1 : 111 1 : 000 1 : 001

Модифицированные обратные и дополнительные коды. Модифицированные обратные и дополнительные коды двоичных чисел отличаются соответственно от обратных и дополнительных кодов удвоением значений знаковых разрядов. Знак «+» в этих кодах кодируется двумя нулевыми знаковыми разрядами, а знак «-» — двумя единичными разрядами.

Пример: Представить десятичные числа +9 и -9 в двоичной системе счисления и записать их соответствующие прямые, обратные, дополнительные, модифицированные обратные и дополнительные коды.

Решение:

А10=9,®А2 =+1001, [A2]п =[A2]ок=[A2]дк =0:1001,

[A2]мок = [A2]мдк = 00 : 1001;

В10=-9,®В2=-1001, [В2]ок =1:0110, [В2]дк =1:0111,

2]мок = 11 : 0110, [В2]мдк = 11 : 0111.

Пример:

(+49)10→(+110001)2 [A]п→0:110001. Дополнительный код [A]дк→0:110001.

Модифицированные обратные и дополнительные коды [A]мок = [A]мдк =00:110001,

(-70)10→(-1000110)2 [В]п→1:1000110. Дополнительный код [В]дк→1:0111001

Модифицированные обратные и дополнительные коды [В]мок =11:1000110;

[В]мдк =11:1000111,

Целью введения модифицированных кодов являются фиксация и обнаружение случаев получения неправильного результата, когда значение результата превышает максимально возможный результат в отведенной разрядной сетке машины. В этом случае перенос из значащего разряда может исказить значение младшего знакового разряда. Значение знаковых разрядов «01» свидетельствует о положительном переполнении разрядной сетки, а «10» - об отрицательном переполнении. В настоящее время практически во всех моделях ЭВМ роль удвоенных разрядов для фиксации переполнения разрядной сетки играют переносы, идущие в знаковый и из знакового разрядов.

Наши рекомендации