Арифметические действия в восьмеричной системе счисления



При наладке аппаратных средств ЭВМ или создании новой программы возникает необходимость "заглянуть внутрь" памяти машины, чтобы оценить ее текущее состояние. Но там все заполнено длинными последователь­нос­тя­ми нулей и единиц двоичных чисел. Эти последовательности очень неудобны для восприятия человеком, привыкшим к более короткой записи десятичных чисел. Кроме того, естественные возможности человеческого мышления не позволяют оценить быстро и точно величину числа, представленного, напри­мер, комбинацией из 16 нулей и единиц.

Для облегчения восприятия двоичного числа решили разбивать его на группы разрядов, например, по три или четыре разряда. Эта идея оказалась очень удачной, так как последовательность из трех бит имеет 8 комбинаций, а последовательность из 4 бит - 16. Числа 8 и 16 являются степенями двойки, поэтому легко находить соответствие с двоичными числами. Развивая эту идею, пришли к выводу, что группы разрядов можно закодировать, сократив при этом длину последовательности знаков. Для кодировки трех битов требу­ется восемь цифр, поэтому взяли цифры от 0 до 7 десятичной системы. Для кодировки же четырех битов необходимо шестнадцать знаков; для этого взя­ли 10 цифр десятичной системы и 6 букв латинского алфавита: A, B, C, D, E, F. Полученные системы, имеющие основания 8 и 16, назвали соответственно восьмеричной и шестнадцатеричной.

В восьмеричной (octal) системе счисления используются восемь раз­лич­ных цифр: 0, 1, 2, 3, 4, 5, 6, 7. Основание системы - 8. При записи отрица­тель­ных чисел перед последовательностью цифр ставят знак минус. Сло­же­ние, вычитание, умножение и деление чисел, представленных в восьмерич­ной системе, выполняются весьма просто, подобно тому, как это делают в общеизвестной десятичной системе счисления.

Пример выполнения операции сложения в восьмеричной системе счис­ления:
1   1                     Красным цветом показан перенос из младших разрядов в старшие.
4 7 6                  Выполнение операции в каждом разряде:
+  3 4                1) 6 + 4 = 10 = 1*8 + 2 = 128   
5 3 2                2) 1 + 7 + 3 = 1*8 + 3 = 138 
                    3) 1 + 4 = 5
Проверим результат путем перевода чисел в десятичную систему счис­ления :
4768  = 4*82 + 7*8 + 6 = 318                        318
348 = 3*8 + 4 = 28                                        +28
532 = 5*82 + 3*8 + 2 = 346                          346

Пример выполнения операции вычитания в восьмеричной системе счис­ления:
     7  8                     Красным цветом показан перенос из старших разрядов в младшие.
5 3 2                  Выполнение операции в каждом разряде:
-   3 4                1) 8 + 2 – 4 = 6  
4 7 6                2) 7 + 2 - 3 = 1*8 + 3 = 138 
   3) 1 + 4 = 5

Пример выполнения операции умножения в восьмеричной системе счис­ле­ния:
  5 4                             54              4*4 = 16 = 2*8 + 0 = 208 (записываем 0)
* 3 4                            *   4              2+ 5*4 = 22 = 2*8 + 6 = 268
    2 6 0                            260
  + 2 0 4                          
   2 3 2 0                             54              4*3 = 12 = 1*8 + 4 = 148 (записываем 4)
                                           *   3                      1 + 5*3 = 16 = 2*8 + 0 = 208
                                          204
Выполним проверку:
548 = 5*8 + 4 = 4410                                               44
348 = 3*8 + 4 = 2810                                                        *   28
23208 = 2*83 + 3*82 + 2*8  = 123210                              352
                                                                           + 88      = 123210
Пример выполнения операции деления в восьмеричной системе счис­ле­ния:

       2 3 2 08         5 48
       - 2 0 4          3 48
    2 6 0
-  2 6 0
    0
Деление в восьмеричной системе близко делению в десятичной системе: нужно подобрать цифры частного. 232 делим на 54, в десятичной системе мы получили бы целое частное 4, но из предидущего примера мы знаем, что в восьмеричной системе 54*4 = 260, это много, попробуем взять цифру поменьше – 3, умножаем 54*3 = 204, эта цифра подходит, и т.д.

В различных языках про­грам­мирования запись восьмеричных чисел начинается с 0, например, запись 011 означает десятичное число 9.

Комментариев нет:

Отправить комментарий