Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Организация ЭВМ и систем. Учебное пособие
.pdf
Правила выполнения арифметических операций для двоичной системы счис-
ления остаются такими же, как и для десятичной, что иллюстрирует приводимые
ниже примеры (рисунок 3.1).
Рисунок 3.1 – Примеры выполнения арифметических операций
3.1.2 Восьмеричная и шестнадцатеричная системы счисления. Двоичная си-
стема численного представления, при использовании человеком, представляет собой
несколько неудобную альтернативу по сравнению с десятичной системой, из-за
необходимости длинной записи чисел и перекодирования между десятичной и дво-
ичной формами. В компьютерных науках для более компактного представления ин-
формации в ЭВМ применяются другие системы счисления, такие как восьмеричная
и шестнадцатеричная. Эти системы являются двоично-кодированными и имеют ос-
нование, кратное степени двойки 2
3
– для восьмеричной и 24 – для шестнадцатерич-
ной системы счисления. В восьмеричной системе счисления для изображения чисел
используются восемь цифр: 0 ... 7, в шестнадцатеричной –16, 0 ... 9, A, B, C, D. E, F.
Изображения чисел в восьмеричной и шестнадцатеричной с/с вместе с их двоичны-
ми и десятичными эквивалентами представлены в таблице 3.1.
41

Таблица 3.1 – Изображения чисел в различных системах счисления
Основание системы счисления
10 8 16
2
0 0 0
0
1 1 1
1
2 2 2
10 3 3 3 11 4 4 4 100 5 5 5 101 6 6 6 110 7 7 7 111
8
10
8
1000
9
11
9
1001
10
12
A
1010
11
13
B
1011
12
14
C
1100
13
15
D
1101
14
16
E
1110
15
17
F
1111
Рассмотрев таблицу, можно убедиться в том, что для конвертации восьмерич-
ных чисел в двоичную систему счисления требуется всего три двоичных разряда, в
то время как для перевода шестнадцатеричных чисел достаточно четырех разрядов.
Таким образом, путем замены каждой группы из трех или четырех двоичных цифр
на соответствующую восьмеричную или шестнадцатеричную цифру соответственно
мы можем получить представление исходного двоичного числа в восьмеричной или
шестнадцатеричной системах счисления соответственно, например
т.е.
Для представления этого же двоичного числа в шестнадцатеричной системе
счисления добавим слева три незначащих нуля, получим
42

или
и наоборот
т.е.
Из приведенных примеров видно, что запись числа в восьмеричной системе
счисления сокращает длину записи в три раза по сравнению с аналогичным числом,
представленным в двоичной системе счисления. В то же время, представление числа
в восьмеричной или шестнадцатеричной системе счисления эквивалентно его дво-
ичному представлению, поскольку каждая цифра восьмеричной или шестнадцате-
ричной систем получается путем простой замены группы трех или четырех двоич-
ных разрядов, соответствующих цифре восьмеричной или шестнадцатеричной си-
стемы соответственно.
3.2 Перевод чисел из одной системы счисления в другую
Наиболее распространенными системами счисления являются двоичная,
шестнадцатеричная и десятичная. Вопрос, который возникает, заключается в том,
как числа в этих разных системах счисления могут быть связаны между собой. Су-
ществует несколько методов для преобразования чисел из одной системы счисления
в другую. Рассмотрим эти методы на примерах.
Алгоритм преобразования целого числа из десятичной системы в двоичную,
шестнадцатеричную или восьмеричную системы включает следующие шаги: начнем
с исходного десятичного числа и разделим его на основание системы счисления, в
которую мы хотим выполнить преобразование. Если частное больше основания це-
левой системы счисления, то мы продолжаем деление, деля полученное частное на
43

основание целевой системы счисления. Этот процесс продолжается до тех пор, пока
частное, полученное после каждого деления, не станет меньше основания целевой
системы счисления. Затем числовой результат представляется в виде упорядоченной
последовательности остатков от деления в обратном порядке их получения. Старшая
цифра числа соответствует последнему частному [7].
Если взять, то же число 567 и разделить его на 2, получается частное 283 и
остаток 1. Та же операция производится и с числом 283. Частное – 141, остаток – 1.
Опять полученное частное делится на 2 и так до тех пор, пока частное не станет
меньше делителя. Теперь, чтобы получить число в двоичной системе счисления, до-
статочно записать последнее частное, т.е. 1, и приписать к нему в обратном порядке
все полученные в процессе деления остатки. Результат приведен на рисунке 3.2.
3.2.1 Перевод числа 567 из 10 с/c в 2 с/c
Рисунок 3.2 – Пример перевода числа 567 из десятичной системы в двоичную
Результат, естественно, не изменился: 567 в двоичной системе счисления за-
писывается как 1 000 110 111.
Эти два способа применимы при переводе числа из десятичной системы в си-
стему с любым основанием.
Например, при переводе числа 567
в систему счисления с основанием 16
16
число сначала разлагается по степеням основания. Искомое число состоит из трех
44

цифр, т.к. 16
2
= 256 < 567 < 16
3
= 4096. Определяется цифра старшего разряда. 2·16
2
= 512 < 567 < 3·16
2
= 768, следовательно, искомое число имеет вид 2хх, где вместо х
могут стоять любые шестнадцатеричные цифры. Остается распределить по следую-
щим разрядам число 55 (567 – 512). 3·16 = 48 < 55 < 4·16 = 64, значит, во втором
разряде находится цифра 3. Последняя цифра равна 7 (55 – 48). Искомое шестнадцатеричное число равно 237.
Второй способ состоит в последовательном делении в столбик, с единствен-
ным отличием в том, что делить надо не на 2, а на 16, и процесс деления заканчива-
ется, когда частное становится строго меньше 16 (рисунок 3.3).
Рисунок 3.3 – Пример перевода чисел из десятичной системы в шестнадцате-
ричную
Конечно, для записи числа в шестнадцатеричной системе счисления, необхо-
димо заменить 10 на A, 11 на B и так далее.
Ниже приведено еще несколько примеров, иллюстрирующих перевод числа.
3.2.2 Перевод числа 113 из 10 с/c в 2 с/c (рисунок 3.4).
Рисунок 3.4 – Пример перевода числа 113 из десятичной системы в шестна-
дцатеричную
В итоге получили двоичное число 1110001
(2)
.
45

Для того, чтобы убедиться в том, что перевод осуществлен правильно, проде-
лаем обратное преобразование
3.2.3 Перевод числа 113 из 10 с/с в 16 с/с (рисунок 3.5).
Рисунок 3.5 – Пример перевода числа 113 из десятичной системы в шестна-
дцатеричную
Получили 113
Обратное преобразование: 71
В правильности преобразования можно убедиться, преобразовав 71 в двоич-
ную форму
=71
(10)
(16).
= 716 + 116 = 113
(16)
(10).
Получили тот же результат, что и в предыдущем случае.
3.2.4 Перевод числа 113 из 10 с/с в 8 с/с (рисунок 3.6).
Рисунок 3.6 – Пример перевода числа 113 из десятичной системы в восьми-
ричную
Получили, что
46

Алгоритм перевода десятичной дроби в научном контексте описывается сле-
дующим образом: начнем с того, что исходную десятичную дробь умножаем на ос-
нование системы счисления, в которую планируется выполнить перевод. Получив-
шаяся целая часть (при условии ее наличия) отбрасывается и фиксируется, а остав-
шаяся дробная часть повторно умножается на основание системы счисления. Этот
процесс продолжается до тех пор, пока не будет получено достаточное количество
цифр для точного представления числа с заданной степенью точности либо до тех
пор, пока дробная часть числа не станет равной нулю в результате последующего
умножения. Ниже представлены примеры, иллюстрирующие перевод дроби в различные системы счисления.
3.2.5 Перевод числа 0.632 в 2 с/с (рисунок 3.7).
Рисунок 3.7 – Пример перевода числа 0.632 из десятичной системы в двоич-
ную
Получили, что 0.632 приблизительно равно 0.10100001
мой двоичной цифры после точки.
3.2.6 Перевод числа 0.632 в 16 с/с (рисунок 3.8).
с точностью до вось-
(2)
47

Рисунок 3.8 – Пример перевода числа 0.632 из 10-ой системы в 16-ричную
Получили, что 0.632 приблизительно равно шестнадцатеричному 0.А1 с точ-
ностью до второй шестнадцатеричной цифры после точки. Аналогичный результат
можно получить и из двоичного представления дроби
3.2.7 Перевод числа 0.632 в 8 с/с (рисунок 3.9).
Рисунок 3.9 – Пример перевода числа 0.632 из 10-ой системы в 8-ричную
Получили, что 0.632 приблизительно равно восьмеричному 0.503 с точностью
до третьей восьмеричной цифры после точки.
Необходимо подчеркнуть существенный аспект данной проблемы, а именно:
при конвертации десятичной дроби в двоичную, она может превратиться в беско-
нечную дробь несмотря на то, что исходная десятичная дробь была конечной. Этот
аспект становится источником возникающих погрешностей при представлении ве-
щественных чисел в компьютерах, так как максимальное количество двоичных раз-
рядов, которое может быть сохранено, ограничено разрядной сеткой конкретной
вычислительной машины.
Для чисел, имеющих как целую, так и дробную части, перевод из одной си-
стемы счисления в другую выполняется отдельно для целой и дробной частей, при-
48

чем каждая часть подвергается преобразованию в соответствии с соответствующими
правилами, принятыми для данной части числа.
Операция перевода в десятичную систему выглядит гораздо проще, так как
любое десятичное число можно представить в виде
где a
x = a
... an – это цифры данного числа в системе счисления с основанием p.
0
n
·p
+ a
0
Например, так можно перевести число 4A3F
1
·p
n–1
+... + a
1
·p
n–1
16
+ a
в десятичную систему.
0
·p
,
n
По определению
При замене A на 10, а F на 15, получается
Самый простой способ конвертировать числа из двоичной системы в системы
с основаниями, являющимися степенями двойки (например, 8 и 16), а также в об-
ратном направлении, заключается в следующем: чтобы представить целое число в
двоичной системе счисления в виде числа с основанием 2n, необходимо разделить
это двоичное число справа налево на группы по n разрядов в каждой группе. Если в
последней (самой левой) группе остается менее n разрядов, ее следует дополнить
нулями до достижения необходимого числа разрядов. Затем каждую группу рас-
сматривают как n-разрядное двоичное число и заменяют соответствующей цифрой в
системе счисления с основанием 2
n
.
Чтобы проверить свои знания в области перевода чисел, воспользуемся про-
граммой «Перевод чисел.exe», как показано на рисунках 3.10 и 3.11.
Рисунок 3.10 – Пример проверки перевода целой части из десятичной системы
в двоичную
49

Рисунок 3.11 – Пример проверки перевода дробной части из десятичной си-
стемы в двоичную
3.3 Вопросы для закрепления материала по третьему разделу
1. Ознакомиться с представлением чисел в различных системах счисления и
алгоритмами перевода чисел из одной системы счисления в другую.
2. Придумать и перевести по одному примеру из одной системы счисления в
другую (для всех систем счисления, рассмотренных выше). Числа должны иметь це-
лую и дробную части.
3. Выполнить указанные в задании преобразования чисел.
4. Чем объясняется применение в ЭВМ 2 с/с, 8 с/с и 16 с/с?
5. Как взаимосвязаны 2 с/с, 8 с/с и 16 с/с?
6. Каким образом осуществляется преобразование целых чисел из одной с/с в
другую?
7. Каким образом осуществляется преобразование дробей из одной с/с в дру-
гую?
50
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
