Перевод записи числа из одной системы счисления в другую
В практике компьютеризации используются две основные системы счисления (обозначения) целых чисел без знака: десятичная и двоичная. Существуют достаточно простые алгоритмы перевода записи числа из одной системы счисления в другую.
Алгоритм 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 десятичной системы в восьмеричной системе счисления:
Перевод (запись числа)10 ® (запись числа)2
Рисунок 1.1 - Перевод десятичной записи числа в В-ичную запись того же числа
Перевод (запись числа)10 ® (запись числа)16
125½16 Ответ: [125]10 = [7D]16
112 7
13
Несмотря на достаточную простоту алгоритмов перевода чисел из одной системы кодирования в другую, “ручное” их выполнение при вводе (выводе) данных в память (из памяти) компьютера неприемлемо для человека. Поэтому используются программы, выполняющие эти действия без вмешательства человека. И рядовой пользователь компьютера, вводя и читая десятичные числа с использованием экрана дисплея, может даже не подозревать о существовании двоичной системы кодирования этих чисел.
Методика и порядок выполнения работы
1. Перевести числа из одной системы счисления в другие системы счисления:
Вариант | Из 10-СС в 2 и 8 и 5 и 16-СС | Из 10-СС в 2 и 8 и 5 и 16-СС | Из 2-СС в 8 и 16-СС | Из 10-СС в 2-СС |
17510 | 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 – для отрицательных чисел.
Решение:
А10 = +10, А2 = 1010, [A2]п=0:1010;
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» - об отрицательном переполнении. В настоящее время практически во всех моделях ЭВМ роль удвоенных разрядов для фиксации переполнения разрядной сетки играют переносы, идущие в знаковый и из знакового разрядов.