Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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




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

Число в позиционной системе счисления с основанием q может быть представлено в виде многочлена по степеням q следующим образом:

X=xn-1 ·qn-1 + xn-2 ·qn-2+... + x1 ·q1 + x0 ·q0+ x-1 ·q-1 +... + x-m ·q-m,

где X — запись числа в системе счисления с основанием q, хi цифра в i -ом разряде, n число разрядов целой части, т – число разрядов дробной части.

Записывая слева направо числа, получим закодированную запись числа в q-ичной системе счисления

X =xn-1 xn-2 …x1 x0 x-1 … x-m.

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

<xп-1.. .x2x1x0>2 = < x0 + x1·2 + x2·22 +... + xп-1·2n-1 >10,

Например:

11012 = 110 + 010*210 + l10*410 + l10*810 = 110 + 410 + 810 = 1310;

11102 = 010 + l10*210 + l10*410 + l10*810 = 210 + 410+810= 1410.

1010102 = 210 + 810 + 3210 = 4210.

Аналогично для других систем счисления, причём для перевода дробных чисел обратимся к предыдущей формуле:

1101,012 = 1*23+ l*22 + 0*21+ 1*20 + 0*2-1 + 1*2-2 = 13,2510;

1123 = 1*32+ 1*31 + 2*30 = 1410;

341,58 = 3*82 +4*81+ 1*80+ 5*8-1=225,62510;

A1F,416 = A*162 + 1*161 + F*160 + 4*16-1 = 10*162 + 1*161 + 15*160 + 4*16-1 = 2591,2510

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

Чтобы перевести целую часть числа из десятичной системы в систему с основанием В, необходимо разделить её на В. Остаток даст младший разряд числа. Полученное при этом частное необходимо вновь разделить на В – остаток даст следующий разряд числа и т.д. до тех пор, пока частное не станет равным 0. Для перевода дробной части её необходимо умножить на В. Целая часть полученного произведения будет первым (после запятой, отделяющей целую часть от дробной) знаком. Дробную же часть произведения необходимо вновь умножить на В. Целая часть полученного числа будет следующим знаком и т.д.

Рассмотрим алгоритм перевода на примере целого числа 137 в двоичную систему. Разделим его нацело на 2, получим 137:2 = 68, остаток 1. Полученный результат можно записать следующим образом: 137 = 68x2 +1x2. Продолжим операцию деления дальше: 68: 2 = 34, остаток 0; 34: 2 = 17, остаток 0; 17:2 = 8, остаток 1: 8:2 = 4, остаток 0; 4:2 = 2, остаток 0; 2:2 = 1, остаток 0. Далее процесс продолжать нельзя, т. к. 0 не делится нацело на 2. В результате получим:

137 = 1*27+0*26+0*25+0*24+1*23+0*22+0*21+1*20.

Таким образом, последовательное деление нацело на 2 позволяет разложить число по степеням двойки, а это в краткой записи и есть двоичное изображение числа. 13710 =100010012. Все приведенные выкладки можно сократить, записав процесс деления в виде следующей схемы (рис.а):

 

а) б) в)

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

Для других систем счисления все описанные действия выполняются аналогичным способом. Например, это же число 137 в восьмеричную и шестнадцатеричную систему счисления переводится по похожим схемам (рис. б и в).

Для дробных частей чисел правило последовательного деления заменяется правилом последовательного умножения. Переведем 0,2 из десятичной системы счисления в двоичную. Умножим 0,2 на 2, т. е. 0,2*2 = 0.4 или 0,2 = (0 + 0,4)*2-1=0*2-1+0,4*2-1. Далее продолжим операцию умножения и получим:

0.2 = 0*2-1 + 0* 2-2+1*2-3 +1*2-4+0*2-5+0,4*2-5 …, т.е. 0210 =0.00110011...2.

Все вышеприведенные выкладки можно свести в таблицу:

 

  0.2
  0.4
  0.8
  0.6
  0.2

Заметим, что в двоичной системе счисления конечный вид получают дроби, где в знаменателе только степени двойки. Таким образом, большинство десятичных конечных дробей в двоичной системе счисления будут бесконечными периодическими дробями.

В десятичной системе правильная дробь переводится в десятичную дробь в конечном виде только тогда, когда её знаменатель имеет множители только степени двоек и пятерок, т. е. дробь имеет вид k/(2m5n). Итак,

137,210 =10001001,00110011..., = 1*27 + 1*23 + 1*20 + 1*2-3 + 1*2-4 + 1*2-7 + 1*2-8 +...= 137,1992...10

Между двоичной системой счисления, восьмеричной и шестнадцатеричной существует связь, позволяющая легко переводить числа из одной системы в другую. Чтобы перевести число из двоичной системы счисления в восьмеричную, надо от запятой вправо и влево выделить группы по три цифры (триады) и каждую группу независимо от других перевести в одну восьмеричную цифру. Для перевода в шестнадцатеричную систему необходимо выделять по четыре цифры (тетрады) и переводить каждую группу в одну шестнадцатеричную цифру. Если в последней группе недостаёт цифр, дописываются нули: в целой части – слева, в дробной – справа. Затем каждая группа заменяется соответствующей цифрой новой системы.

Например: Переведём число 1010011110.001100101...2 в восьмеричную и шестнадцатеричную системы.

001 010 011 110.001 100 101...2 = 1236.145…8;

0010 1001 1110.0011 0010 1000...2 = 29Е.328...16

 

Кодирование данных

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

Как уже упоминалось, минимальная единица количества информации – бит, равна одному двоичному разряду. Его можно представить как выбор ответа «да» или «нет» на поставленный вопрос. Электронным представлением бита на компьютере является ситуация «есть сигнал/нет сигнала». В математических науках и информатике обычно «да» обозначается цифрой 1, «нет» – цифрой 0. Одним битом можно закодировать два объекта.

Бит как единица информации слишком мала, поэтому постоянно используется другая более распространенная единица количества информации, производная от бита – байт.

Байт – наименьшая единица памяти компьютера, равная 8 битам, или 8-значному двоичному числу:

1 байт = 8 бит.

Одним байтом можно закодировать 256 объектов, приписав каждому из 256 объектов одно из 256 8-значных двоичных чисел. Поэтому запомните еще одно число, постоянно встречающееся в информатике: 256 = 28.

Работая с информацией на современных компьютерах, следует знать следующие единицы, производные от байта, при составлении которых используется третье замечательное число 1024 = 210.

1 килобайт = 1 Кб = 1 К = 1024 байта.

1 мегабайт = 1 Мб = 1 М = 1024 Кб.

1 гигабайт = 1 Гб = 1 Г = 1024 Мб.

1 терабайт = 1 Тб = 1 Т = 1024 Гб.

Заполним таблицу с коэффициентами перевода производных единиц от байта друг в друга. Например,
1 Мб = 210 Кб, 1 Кб = 210 Мб.

Таблица:. Коэффициенты перевода производных единиц от байта

 

  Байт Килобайт Мегабайт Гигабайт Терабайт
б   2-10 2-20 2-30 2-40
Кб 210   2-10 2-20 2-30
Мб 220 210   2-10 2-20
Гб 230 220 210   2-10
Тб 240 230 220 210  

 

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...