- •1. Информация, информатика, информационные технологии
- •1.1 Информация
- •1.1.1. Понятие информации
- •1.1.2. Свойства информации
- •1.1.3. Понятие количества информации
- •1.1.4. Информационные процессы
- •1.1.5. Информация в жизни человечества
- •1.2. Предмет и структура информатики
- •Информатика
- •Аппаратное обеспечение
- •1.3. Представление (кодирование) данных
- •1.3.1. Представление чисел в двоичном коде
- •Системы счисления
- •Преобразование чисел из одной системы счисления в другую
- •Представление чисел в двоичном коде
- •1.3.2. Представление символьных и текстовых данных
- •1.3.3. Представление звуковых данных в двоичном коде
- •1.3.4. Представление графических данных в двоичном коде
- •1.3.5. Понятие сжатия информации
- •1.4. Структуры данных
- •1.5. Хранение данных
- •1.6. Математические основы информатики
- •1.6.1. Алгебра высказываний (булева алгебра) Основные понятия
- •Логические операции
- •Логические выражения. Порядок логических операций
- •Зависимости между логическими операциями
- •Табличное и алгебраическое задание булевских функций
- •1.6.2. Элементы теории множеств
- •1.6.3. Элементы теории графов Основные понятия
- •Связанность графов
- •Задание графа
Преобразование чисел из одной системы счисления в другую
Так как десятичная система для нас удобна и привычна, все арифметические действия мы делаем в ней, то преобразование чисел из произвольной недесятичной (q 10) системы в десятичную удобно выполнять на основе разложения по степеням q, например:
11100111(2)= 127+126+125+024+023+122+121+120=128+64+32+4+2+1=231(10),
или 347(8)= 382+481+780=364+48+7=231(10)
Преобразование из десятичной в прочие системы счисления проводится с помощью правил умножения-деления. При этом целая и дробная части переводятся отдельно.
Рассмотрим алгоритм на примере перевода десятичного числа 231 в двоичную систему, совершенно аналогичен перевод из десятичной системы в любую q-ичную. Разделим число на два (основание системы) нацело 2312=115 и остаток 1, т.е. можно записать
231=11521+120.
Число 115 (такой двоичной цифры нет) тоже может быть разделено нацело на 2, т.е. 1152=57 и остаток 1. По аналогии запишем
231=(572+1)2+1= 5722+111+120
аналогично продолжим процесс дальше
572=28 остаток 1; 231=((282+1)2+1)2+1= 2823+122+121+120
282=14 остаток 0; 231=(((142+0)2+1)2+1)2+1=1424+122+121+120
142=7 остаток 0; 231=((((72+0)2+0)2+1)2+1)2+1=725+122+121+120
72=3 остаток 1; 231=(((((32+1)2+0)2+0)2+1)2+1)2+1=326+125+122+121+120
32=1; остаток 1; далее процесс продолжать нельзя т.к. 1 не делится нацело на 2
231=((((((12+1)2+1)2+0)2+0)2+1)2+1)2+1=127+126+125+122+121+120
Таким образом, последовательное деление нацело позволяет разложить число по степеням двойки, а это в краткой записи и есть двоичное изображение числа.
231 =127+126+125+024+023 +122+121+120 = 11100111(2)
Эти выкладки можно сократить, записав следующим образом процесс деления.
_231|_2_
230| 115|_2_
1 114| 57|_2_
1 56| 28|_2_
1 28| 14|_2_ 231(10)=11100111(2)
0 14| 7 |_2_
0 6 | 3 |_2_
1 2| 1
1
Читая частное и остатки от деления в порядке обратном получению, получим двоичную запись числа. Такой способ перевода чисел называется правилом (алгоритмом) последовательного деления, очевидно, что он применим для любого основания.
Для дробных чисел правило последовательного деления заменяется правилом последовательного умножения, которое также рассмотрим на примере. Переведем 0.8125 из десятичной системы в двоичную систему счисления.
Умножим его на 2, т.е. 0.81252=1.625 или 0.8125=(1+0.625)2-1=12-1+0.6252-1
Аналогично 0.625=(1+0.25)2-1 или
0.8125=12-1+(1+0.25)2-1 2-1=12-1+12-2+0,252-2 , но 0.25=0.52-1
0.8125=12-1+(1+0.52-1)2-1 2-1=12-1+12-2+0,52-3 , но 0.5=12-1
0.8125=12-1+12-2+12-12-3 =12-1+12-2+12-4 .
В итоге получаем, что 0.8125(10) =12-1+12-2+12-4=0.1101(2). Сокращая выкладки, получим правило (алгоритм) последовательного умножения.
0 |
8125 2 |
1 |
625 2 |
1 |
250 2 |
0 |
5 2 |
1 |
0 |
Попутно заметим, что в десятичной системе счисления правильная дробь переводится в десятичную дробь в конечном виде только в том случае, если ее знаменатель в качестве множителей имеет только степени двоек и пятерок, т.е. дробь имеет вид . Все же остальные дроби переводятся в бесконечные периодические дроби. Аналогично, в двоичной системе счисления конечный вид получают дроби, где в знаменателе только степени двойки, т.е. большинство десятичных конечных дробей в двоичной системе счисления будут бесконечными периодическими дробями.
Если ведутся приближенные вычисления, то последний разряд является сомнительным, и для обеспечения в приближенных вычислениях одинаковой точности в двоичной и десятичной записях числа без бесконечных дробей, достаточно взять число двоичных разрядов в (log2103.3) 4 раза больше, чем десятичных .
Между двоичной системой счисления с одной стороны и восьмеричной и шестнадцатеричной (заметим 8 и 16 – есть третья и четвертая степени двойки) с другой стороны, существует связь, позволяющая легко переводить числа из одной системы в другую. Рассмотрим на примере:
231.8125(10)=11100111.1101(2)= 127+126+125+122+121+120+12-1+12-2+12-4 .
Для перевода в шестнадцатеричную систему счисления сгруппируем целую и дробную части в группы по четыре члена и вынесем в каждой группе за скобки множители кратные 24 , получим:
(123+122+121+020)24+(123+122+121+120)+(123+122+021 +120) 2-4= =(123+122+121+0)161+(122+121+120)160+(123+122+021 +120) 16-1= =14161+7160+1316-1 =E7.D(16)
Резюмируя, заключаем: для того, чтобы перевести число из двоичной системы в шестнадцатеричную, надо от десятичной запятой вправо и влево выделить группы по четыре цифры (они называются тетрадами) и каждую группу независимо от других перевести в одну шестнадцатеричную цифру.
Аналогичное правило для восьмеричной системы читатель выведет сам.