Преобразование между двоичной, восьмеричной и шестнадцатеричной системами счисления




СИСТЕМЫСЧИСЛЕНИЯ

 

Система счисления способ представления чисел, опирающийся на некоторое конечное число знаков, называемых цифрами.

Происхождение наиболее употребительной десятичной системы связано с пальцевым счетом. В России до XVIII в. существовала де­сятичная система счисления, основанная на буквах алфавита , , и т.д. Начертание этих цифр произошло от греческих букв , , и др. Совре­менная десятичная система основана на десяти цифрах, начертание которых сформировалось в Индии к V в. и пришло в Европу с арабскими рукописями, в связи с чем цифры получили название «арабские». В некоторых странах применяли и другие системы счисления, например, в Китае – пятеричную. Существовавшая в Древнем Вавилоне шестидесятеричная система сохранилась в наши дни в делении часа и градуса угла на 60 минут и минут на 60 секунд. Древние евреи использовали как десятичную, так и двенадцатеричную системы счисле­ния.

В зависимости от способа изображения чисел системы счисления делятся на пози­ционные и непозиционные. Каждая цифра в числе, записанном в позиционной системе счисления, несет двойную информационную нагрузку:

1) количество;

2) разряд, т.е. позицию, на которой цифра находится в числе.

Например, в десятичном числе 7 313 цифра 3 (та, что левее) означает, что:

1) она находится во втором разряде (отсчет разрядов ведется справа, начиная с нуля), т.е. соответствует разряду сотен;

2) количество этих сотен равно 3.

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

. (1)

Здесь – количество цифр, используемых для записи чисел в данной системе счисления (основание системы счисления);

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

Пример. Десятичное число 7 313, 49 в виде (1) представляется следующим образом:

7 313, 4910 = 7 · 103 + 3 · 102 + 1 · 101 + 3 · 100 + 4 · 10-1 + 9 · 10-2.

Тогда коэффициенты его разложения будут равны

a 3 = 7, a 2 = 3, a 1 = 1, a 0 = 3, a -1 = 4, a -2 = 9.

Приведем некоторые примеры позиционных систем счисления.

Таблица 1

Система счисления Основание Цифры
Двоичная   0, 1
Восьмеричная   0, 1, 2, 3, 4, 5, 6, 7
Десятичная   0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Шестнадцатеричная   0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

 

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

Установим соответствие между записями чисел в системах счисления, представленных в табл. 1.

Таблица 2

Десятичное число Двоичное число Восьмеричное число Шестнадцатеричное число
       
       
       
       
       
       
       
       
       
       
      A
      B
      C
      D
      E
      F
       

 

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

Кроме позиционных систем счисления су­ществуют системы, в которых значение цифры не зависит от той позиции, которую она занимает в числе. Такие системы счисления называются непозиционными. Наи­более известным примером непозиционной системы счисления является римская система. В этой системе используется 7 знаков (I, V, X, L, С, D, М), которые соответствуют следующим величинам:

I (1), V (5), X (10), L (50), С (100), D (500), М (1000).

Например, десятичное число 7 313 в римской системе счисления запишется следующим образом:

MMMMMMMCCCXIII.

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

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

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

 

Для преобразования целого числа x 10 из десятичной системы счисления в р -ичную используется следующий алгоритм:

1) начало;

2) задать число x 10;

3) если x 10 < p, то x 10 = xp (перевод выполнять не нужно) и перейти к шагу 7; в противном случае перейти к шагу 4;

4) разделить x 10на p и записать целую часть m частного и остаток n;

5) записать остаток n с в младший из незаполненных разрядов p -ичного числа;

6) заменить число x 10на m и вернуться к шагу 3;

7) конец.

Пример 1. Перевести число 7 31310 в двоичную, восьмеричную и шестнадцатеричную системы счисления.

 

Этап Перевод в двоичную систему Перевод в восьмеричную систему Перевод в шестнадцатеричную систему
x 10 m n x 10 m n x 10 m n
  7 313 3 656   7 313     7 313    
  3 656 1 828              
  1 828                
                   
                   
                   
                   
                   
                   
                   
                   
                   

 

Т.о., 7 31310 = 1 1100 1001 00012 = 16 2218 = 1 C9116.

 

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

 

Рассмотрим перевод правильной десятичной дроби (дроби, у которой целая часть равна нулю) 0, y 10в р -ичную систему счисления. В общем случае такой перевод абсолютно точно выполнить не удастся. Почему? Следовательно, перевод числа в p -ичную систему счисления можно выполнить только с определенной точностью . Число зна­ков k после запятой, которые необходимо определить для p -ичного представления дробной части, определяется из соотношения

.

Отсюда получаем, что

,

, т.е. . (2)

Для преобразования правильной десятичной дроби числа 0, y 10 из десятичной системы счисления в р -ичную используется следующий алгоритм:

1) начало;

2) задать число 0, y 10 и точность ;

3) вычислить по формуле (2) число k р -ичных разрядов, требуемых для записи дробной части;

4) умножить число 0, y 10 на р и записать целую часть m и дробную n часть произведения.

5) записать m в старший разряд дробной части р -ичного числа;

6) заменить число 0, y 10 на n.

Действия 4 – 6 повторить еще k –1 раз.

7) конец.

 

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

Этап Перевод в двоичную систему Перевод в восьмеричную систему Перевод в шестнадцатеричную систему
x 10 m n x 10 m n x 10 m n
 
  0,81   0,62 0,81   0,48 0,81   0,96
  0,62   0,24 0,48   0,84 0,96   0,36
  0,24   0,48 0,84   0,72      
  0,48   0,96            
  0,96   0,92            
  0,92   0,84            
  0,84   0,68            

 

Т.о., 0,8110 = 0,110 01112 = 0,6368 = 0,CF16.

 

Если число является неправильной десятичной дробью, то есть содержит как це­лую, так и дробную части, к этим частям по отдельности применяются соответ­ствующие алгоритмы преобразования. Тогда число 7 313,8110 будет представлено в двоичной, восьмеричной и шестнадцатеричной системах счисления с точностью 0,006 следующим образом:

7 313,8110 = 1 110 010 010 001,110 011 12 = 16 221,6368 = 1 C91,CF16.

Перевод р -ичного числа в десятичную систему счисления

 

Для перевода p -ичного числа в десятичную систему счисления используется формула (1), причем операции сложения, умножения и возведения в степень в этой формуле проводятся в десятичной системе.

 

Пример 3. Перевести двоичное число 1 110 010 010 001,11001112, восьмеричное 16 221,6368и шестнадцатеричное 1 C91,CF16в десятичную систему счисления.

1 110 010 010 001,11001112 = 1·212 + 1·211 + 1·210 + 1·27 + 1·24 + 1·20 + 1·2-1 + 1·2-2 + 1·2-5 + 1·2-6 + 1·2-7 =

= 4096 + 2048 + 1024 + 128 + 16 + 1 + 1/2 + 1/4 + 1/32 + 1/64 + 1/128 = 7 313,804687510,

16 221,6368 = 1·84 + 6·83 + 2·82 + 2·81 + 1·80 + 6·8-1 + 3·8-2 + 6·8-3 = 212 + 6·29 + 2·26 + 2·23 + 1 + 6/23 + 3/26 + 6/29 = = 4096 + 6·512 + 128 + 16 + 1 + 6/8 + 3/64 + 6/512 = 7 313,8085937510,

1 C91,CF16 = 1·163 + 12·162 + 9·161 + 1·160 + 2·16-1 + 15·16-2 = 212 + 12·256 + 9·16 + 1 + 12/16 + 15/256 =

= 4096 + 12·256 + 9·16 + 1 + 12/16 + 15/256 = 7 313,8085937510.

Проверим, что исходные двоичное, восьмеричное и шестнадцатеричное числа равны десятичному числу 7 313,8110 с точностью до ε = 0,006:

|7 313,8046875 – 7 313,81| = 0,0053125 < 0,006 = ε,

|7 313,80859375 – 7 313,81| = 0,00140625 < 0,006 = ε.

 

Преобразование между двоичной, восьмеричной и шестнадцатеричной системами счисления

 

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

Для преобразования между двоичной, восьмеричной и шестнадцатеричной системами счисления используются двоичные три­ады и двоичные тетрады (табл. 3).

Таблица 3

Восьмеричный или шестнадцатеричный знак Двоичная триада Двоичная тетрада
     
     
     
     
     
     
     
     
   
   
A  
B  
C  
D  
E  
F  

 

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

 

Пример 4. Перевести восьмеричное число 16221,6368 и шестнадцатеричное число 1C91,CF16 в двоичную систему счисления.

Решение. Переведем в двоичную систему счисления сначала исходное восьмеричное число.

1. Заменим в восьмеричном числе каждую цифру соответствующей двоичной триадой согласно табл. 3:

16221,6368 = 001 110 010 010 001,110 011 1102.

2. Удалим незначащие нули в полученном двоичном числе:

001 110 010 010 001,110 011 1102 = 1 110 010 010 001,110 011 112.

Аналогичным образом переведем заданное шестнадцатеричное число в двоичную систему счисления.

1. Заменим в шестнадцатеричном числе каждую цифру соответствующей двоичной тетрадой согласно табл. 3:

1C91,CF16 = 0001 1100 1001 0001,1100 11112.

2. Удалим незначащие нули в полученном двоичном числе:

0001 1100 1001 0001,1100 11112 = 1 1100 1001 0001,1100 11112.

Ответ. 16221,6368 = 1 110 010 010 001,110 011 112, 1C91,CF16 =1 1100 1001 0001,1100 11112.

 

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

 

Пример 5. Перевести двоичное число 1110010010001,11001112 в восьмеричную и шестнадцатеричную системы счисления.

Решение. Переведем исходное число сначала в восьмеричную систему.

1. Разобьем разряды исходного двоичного числа на триады (по отдельности в целой и дробной частях):

1110010010001,11001112 = 1 110 010 010 001,110 011 12.

2. Мы видим, что после разбиения образовались две неполных триады (по одной в целой и в дробной частях). Чтобы двоичное число не изменилось, формально дополним эти триады нулями (в целой части ­– слева, в дробной – справа):

1 110 010 010 001,110 011 12 = 001 110 010 010 001,110 011 1002.

3. Заменим каждую двоичную триаду соответствующим восьмеричным знаком согласно табл. 3:

001 110 010 010 001,110 011 1002 = 16 221,6348.

Аналогичным образом переведем заданное число в шестнадцатеричную систему счисления.

1. Разобьем разряды исходного двоичного числа на тетрады:

1110010010001,11001112 = 1 1100 1001 0001,1100 1112.

2. Добавим в неполные тетрады нули:

1 1100 1001 0001,1100 1112 = 0001 1100 1001 0001,1100 11102.

3. Заменим каждую двоичную тетраду соответствующим восьмеричным знаком согласно табл. 3:

0001 1100 1001 0001,1100 11102 = 1 C91,CE16.

Ответ. 1110010010001,11001112 = 16 221,6348 = 1 C91,CE16.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-08 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: