Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Преобразование дробных чисел






КОДИРОВАНИЕ ЧИСЕЛ

ДВОИЧНАЯ СИСТЕМА СЧИСЛЕНИЯ

Двоичная система счисления подразумевает, что все числа состоят из двух возможных цифр: «1» и «0». В целом принцип счета остается прежним, для позиционных систем счисления. Дробное число в десятичной системе является дробями «десяти», а в двоичной соответственно дробями «двойки». Пример счета приведен ниже в таблице 1.1:

Таблица 1.1

Примеры двоичных чисел

целые числа дробные числа
двоичная система десятичная система двоичная система десятичная система
    0, 001 0, 125
    0, 010 0, 250
    0, 011 0, 370
    0, 100 0, 500
    0, 101 0, 625
    0, 110 0, 750
    0, 111 0, 875
    1, 000 1, 000
       

 

Существует правила пересчета двоичных чисел в десятичные и наоборот. Целые и дробные числа преобразуются по-разному.

 

Преобразование целых чисел

Рассмотрим преобразование целого числа 100 из десятичной системы в двоичную. Для пояснения - каждое число будет иметь индекс, поясняющий, в какой системе находится число. Целые числа переводятся последовательным делением на основание счета, в данном случае на «2». Число делится нацело с вычислением остатка (см. рис. 1). Полученное частное повторно делится на «2» и так далее до тех пор, пока в последнее частное не станет меньше основания счета, т.е. «2» (рис. 1.1).

 

                         
                         
                         
                         
                         
                         
                         
                         

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

 

Полученные остатки и есть наши искомые разряды. Записываем «1», а затем наши остатки, начиная с последнего получившегося. В итоге имеем: 10010 → 11001002

Обратный расчет двоичного числа в десятичное осуществляется исходя из развернутой формы числа. Проведем обратное преобразование полученного выше числа в десятичную форму. Пронумеруем разряды числа, начиная с младшего:

 

             
             

 

Далее умножим разряд на основание счета в степени его порядкового номера и просуммируем результат:

1· 26 + 1· 25 + 0· 24 + 0· 23 + 1· 22 + 0· 21 + 0· 20 = 64 + 32 + 4 = 10010

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

 

Преобразование дробных чисел

Дробные числа преобразуются иными методами, а именно умножением. Умножению подвергаем только дробную часть до тех пор пока она не исчезнет. Продемонстрируем преобразование числа 0, 12510 и 0, 110 в двоичную систему счисления:

 

× 0, 125 × 0, 1
   
× 0, 250 × 0, 2
   
× 0, 500 × 0, 4
   
  1, 000 × 0, 8
     
    × 1, 6*
     
    × 1, 2
     
      0, 4

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

(* - умножению подлежит только дробная часть числа, поэтому - 0, 6· 2=1, 2)

 

Разрядами двоичного числа будут целые части чисел, образующихся при умножении. Первый ноль в исходном числе это ноль в целой части, а остальные - разряды двоичного числа. Поэтому имеем 0, 12510 → 0, 0012. Во втором случае наблюдается зацикливание расчетов, таким образом, расчеты дают двоичное число с бесконечной дробной частью (иррациональное число) которое записывается следующим образом 0, 000110011(0011)… (см. рис. 1.2).

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

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

 

  -1 -2 -3
0,      

Произведем сложение разрядов с учетом их степеней:

  -1 -2 -3 -4 -5 -6 -7 -8 -9
0,                  

Произведем сложение разрядов с учетом их степеней:

Результат лишь примерно равен исходному числу (см. прим. выше)

 

Если число содержит целую и дробную части одновременно, то оно преобразуется двумя действиями: каждая из частей преобразуются отдельно друг от друга, а затем соединяются. Например, число 23, 4310 будет преобразовано следующим образом:

Преобразуем целую часть 2310 в двоичную систему:
                 
                 
                 
                 
                 
                 

Получаем: 2310 = 101112

Преобразуем дробную часть 0, 4310 в двоичную систему:

× 0, 43 × 1, 76
     
× 0, 86   × 1, 52
     
× 1, 72   × 1, 04
     
× 1, 44   × 0, 08
     
× 0, 88     0, 16
     
  1, 76   и т.д.

Получаем 0, 4310 = 0, 011011100…2

Для получения итогового числа соединяем обе части вместе и получаем:

23, 4310 = 10111, 011011100…2

 

Обратный пересчет осуществляем, как было показано выше, через развернутую форму числа:

          -1 -2 -3 -4 -5 -6 -7 -8 -9
        1,                  

Произведем сложение разрядов с учетом их степеней (для простоты будем рассматривать только значимые разряды, отличные от нуля):



Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.009 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал