Примеры по информатике

Оглавление

Перевод из десятичной системы счисления в двоичную
     Пример 1. Перевод целого числа 124
     Пример 2. Перевод десятичной дроби
     Пример 3. Перевод правильной дроби 2/7
Представление больших чисел в форме с плавающей запятой
     Пример 4. Представление числа 3*1010 в форме с плавающей запятой
     Пример 5. Представление числа 1035 в форме с плавающей запятой

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

Пример 1. Перевод целого числа 12410

    124 | 2 
    12     62 | 2 
      4    62    31 | 2 
      4     0    30   15 | 2 
      0           1   14   7  | 2 
                       1   6    3  | 2 
                           1    2    1
                                1 

Выписывая справа налево выделенные красным цветом цифры (результат от последнего деления и остатки от всех делений) получим двоичное представление числа 12410 = (1 111 100)2. Числа, близкие по значению к 2n можно переводить из десятичной системы счисления в двоичную не прибегая к многократному делению на 2. Заметим, что число 2n - 1 в двоичной ситеме счисления состоит из n единиц, и поэтому можно перевести в двоичную систему не большое число X, а маленькую разность y = (2n - 1) - X, полученную в десятичной системе счисления, и вычесть её из 11 .. 1 (n единиц). В нашем случае

         X = 124 ,
         y = (27 -1) -124 = 3 = 112
         X = (27 - 1) - 3 = 11111112 - 112= 11111002

Пример 2. Перевод десятичной дроби 124.35 состоит из двух этапов:

Целая часть переводится в двоичную систему так же, как в примере 1. Алгоритм второго этапа, в некотором смысле, противоположен первому. Вместо последовательного деления на два делается последовательное умножение. Переведём 0.35 с точностью до восьми двоичных разрядов:

     0.35 * 2 = 0.7
     0.7  * 2 = 1.4
     0.4  * 2 = 0.8
     0.8  * 2 = 1.6
     0.6  * 2 = 1.2
     0.2  * 2 = 0.4
     0.4  * 2 = 0.8
     0.8 *  2 = 1.6
 Результат состоит из выделенных красным цветом цифр (сверху вниз):
    0.3510 = 0.010110012.
Проверка
   0.010110012 = 1/4+1/16+ 1/32 +1/256 =0.3476562510.
Ошибка
   0.35 - 0.34765625 = 0.00234375
Точно переводится в двоичную систему счисления правильная дробь, знаменатель
которой равен 2n, где n = 1,2, ... Например,
    0.125 = 1/8 = 0.0012
Проверим:
    0.125 * 2 = 0.250
    0.25  * 2 = 0.50
    0.5   * 2 = 1.00
    

Пример 3. Перевод правильной дроби 2/7.
   а) Переведём в двоичную систему числитель и знаменатель:

   2 = 102
   7 = 1112

б) разделим в двоичной системе чилитель на знаменатель

    1000 |111
     111   0.01001(001)
       1000
        111
          1000
           111
             1
Проверка
    0.01001001 =1/4 + 1/32 +1/256 = 73/256
    2/7 - 73/256 =  0.0005
 

Представление больших чисел в форме с плавающей запятой

Пример 4. Представление числа 3*1010 в форме с плавающей запятой.
Представим в форме с плавающей запятой число x = 3*1010. Оценим порядок этого числа в двоичной системе счисления:

   log2(3*1010) = log2(3) + 10*log2(10) = < 2 + 10*3.3 = 35

Число 3*1010 имеет в двоичной системе счисления 35 разрядов. Как и в упр. 3 будем считать, что длина мантиссы числа с плавающей запятой равна 23-м разрядам. Тогда 12 (35 - 23) младших разрядов числа x переводить в двоичную систему счисления не нужно, так как при переходе к форме с плавающей запятой они будут отброшены. Отбросить ненужные разряды, не переходя в двоичную систему, можно так:

   3*1010/212 = 30 000 000 000 / 4096 =7324218.75
   Погрешность представения числа 3*1010 в форме с плавающей запятой равна
      0.75*4096 = 3072
   Число 73242218*2-23 - это искомая мантисса. Остаётся перевести её в 
   в двоичную систему счисления. К сожалению, число 73242218 лежит далеко от целых степеней 
   двух, поэтому придётся переводить его последовательным  (23 раза) делением на два.
  7324218  | 2  
  7324218   3662109 | 2 
         0   3662108   1831054 | 2 
                   1   1831054   915527 | 2 
                             0   915526   457763 | 2 
                                      1   457762  228881 | 2 
                                                1  228880  114440 | 2 
                                                        1  114440   57220 | 2 
                                                                0   57220  28610 | 2 
                                                                        0  28610 14305 | 2 
                                                                               0 14304
                                                                                     ↓
   ----продолжение-----------------------------------------------------------------
  ↓
14305  | 2 
14304  7152 | 2  
    1  7152  3576 | 2 
          0  3576   1788 | 2 
                0   1788   894 | 2 
                      0    894  447 | 2 
                             0  446   223 | 2 
                                  1  222   111 | 2 
                                       1  110   55 | 2 
                                            1  54   27 | 2 
                                                1  26  13 | 2 
                                                   1 12   6 | 2 
                                                      1  6   3 | 2 
                                                         0  2    1
                                                            1
                                                        
   
 Выписывая в обратном порядке выделенные красным цветом цифры, получаем   
	7324318 = 110 1111 1100 0010 0011 10102

Число 3*1010 в фоpме с плавающей запятой имеет вид:

0  0 1 0 0 0 1 1  0 1 1 0  1 1 1 1  1 1 0 0  0 0 1 0  0 0 1 1  1 0 1 0
  Порядок p=35                    Мантисса                                          

Пример 5. Представление числа 1035 в форме с плавающей запятой
В электронных блокнотах и электронных таблицах количество точно представимых цифр в числе ограничено, как правило, 15 - 16-ю разрядами. Например в Excel 2003 число 123456789012345 будет представлено точно, а число 123456789012345678901 - как 123456789012345000000, т.е. в конце числа цифры 6, 7, 8, 9, 1 будут заменены нулями. Чтобы, используя для вычислений Excel 2003, не увеличить погрешность перевода числа 1035 в форму с плавающей запятой, заметим, что любое число An можно представить в виде произведения

                     An1An2 ... Anm, где n1+n2+ ... + nm = n

Введём обозначение: ]A[ - целая часть A. Вычислим порядок p:

     p = ]log2(1035)[ + 1 = ]116,267[ +1  = 117

При переводе в двоичную систему счисления будет отброшено 117-23=94 разряда. Как и в примере 4, разделим исходное число на 2p - 23:

      1035 = 1010 1010 1010 105
      294    231  231  231  2
    Вычислив на калькуляторе или в Excel 
        a =  1010  
             231 
        s = a * a * a * 5 * 104
    получим в десятичной системе счисления все знаки мантиссы.