Системы исчисления
Автор Guyver   
10.05.2008 г.

СИСТЕМЫ ИСЧИСЛЕНИЯ (автор: Chief_exb)

Оглавление.

1. Введение.
2. Двоичная система.
3. Шестнадцатеричная система.
4. Восьмеричная система исчисления.
5. Преобразование двоичной системы к 16, 8-ричной и обратно.
6. Дроби.

Введение.

Совсем недавно я обнаружил, что многим нелегко даётся понимание шестнадцатеричной и двоичной систем исчисления. Поэтому этот FAQ я посвящу им. Начнём с простого. Все мы знаем десятичную систему исчисления, так как обычно только с ней и сталкиваешься. Возьмём число 1234.
 
Степень 103210
цифра1234
Таблица №1

Число 1234 это ничто иное как 1103+2102+3101+4100=1234

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

Допустим, A-число состоит из n цифр системы исчисления D, тогда его можно записать так: А=аn∙Dn-1n-1∙Dn-2+ʌ2∙D11∙D (Ур.1), где a - цифры этого числа.

Теперь о системах исчисления по подробнее.

Двоичная система.

  Система исчисления с числом цифр 2: 0 и 1 (D=2). В компьютере информация кодируется двумя состояниями: сигналами пассивного уровня или активного уровня, т.е. 0 или 1. Поэтому эта система исчисления и была разработана. Теперь применим уравнение 1 к двоичной системе и получим число 1001.

Если это понятно, то как нам перейти от 10 системы к двоичной? Нужно делить последовательно на два.

 
102        
1052       
0422      
  |121      
  |  |0  |       
 \/ \/\/ \/      
0101      

<--

 --- --- ---      
          
          

Стрелкой показан порядок записи цифр остатков от деления на 2. Наше число 10 десятичное это ничто иное, как 1010 двоичное. Далее, чтобы не было разночтений, я буду писать 1010, где нижний индекс основание системы исчисления.

Шестнадцатеричная система.

D=16. Пожалуй, с ней исследователю РОМов приходится сталкиваться очень часто. Как вы уже заметили, двоичная система исчисления очень неудобна для записи. Чтобы написать число 1010 надо 4 двоичных цифры. А 8 цифр дают всего лишь 25510. Поэтому было решено перейти для записи к системе кратной двоичной: шестнадцатеричной. Цифры этой системы: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F.

Применяя уравнение 1, можно записать число 1F16
15161+15160=15+16=31

1F16=3110

Преобразование из 10 к 16, всё то же деление на D=16

3116
161
154
 |1
 | |
 \/\/ 
F1
<------

Записываем остатки в обратном порядке и получаем 1F (естественно заменяя 15 на F).

Восьмеричная система исчисления.

D=8 утратила свое значение, уступив место 16-ричной системе исчисления. Но она всё также преподаётся в университетах и школах. Все то же самое, что и для 16.

Применяя уравнение 1, можно записать число 2468 как:
282+481+680=128+32+6=166

2468=16610

Преобразование из 10 к 8, всё то же деление на D=8

1668 
160208

6

162
 |4 |
 | | | 
\/\/\/
642
 <-- -- --
 
Записываем остатки в обратном порядке, получаем 246.

Преобразование двоичной системы к 16, 8-ричной и обратно.

10162
 000000
110001
220010
330011
440100
550101
660110
770111
881000
991001
10A1010
11B1011
12C1100
13D1101
14E1110
15F1111
Таблица №2

На практике такое часто нужно. Как это сделать? Нужно просто заменить двоичные цифры

Имеем 2-ичное число 1010001 дополняем спереди его нулями, чтобы количество цифр было кратно 4: 0101 0001, и заменяем полученные тетрады по таблице.
Получаем 5116=10100012 .

Теперь с 8-миричной системой всё то же самое, только заменяем не тетрады, а триады.
Подчёркнутый 0 не учитывать. 11100 дополняем нулями спереди чтобы число цифр было кратно 3. и заменяем по таблице 2: 011 1002=348 .

Легко заметить, что обратное преобразованием ничем ни отличается.
Допустим 1F16=0001 11112. Или 248=010 1002

Всё очень просто, не правда ли?

Дроби.

Как дело обстоит с дробями? Описанный формат дроби не соответствует его представлению в памяти персонального компьютера, но изучается в университетах, для базиса знаний. Чтобы перейти потом к сложному. Итак, помните таблицу 1?

А что с десятичной дробью? Оказывается всё просто: 1234,12

 
Степень 103210-1-2
цифра123412
Таблица №3

1103+2102+3101+4100+110-1+210-2=1234,12
Уравнение 1 примет вид.

А-целое, B-дробное.Число=C=A+B
А=аn∙Dn-1n-1∙Dn-2+ʌ2∙D11∙D для целой части
И для дробной части.
B=b1∙D-1+b2∙D-2+ʌ+b2∙D-(k-1)+bk∙D-k
Для преобразования дроби в двоичную систему исчисления необходимо умножать её на два. Возьмем число 8,12.

810=10002
0,12x2=0,24 нет ничего в целой части пишем в дробь 0,0
0,24x2=0,48 нет ничего в целой части пишем в дробь 0,00
0,48x2=0,96 нет ничего в целой части пишем в дробь 0,000
0,96x2=1,92 в целой части 1 пишем в дробь 0,0001
Отбрасываем целое и продолжаем
0,92х2= И так пока не выйдем на заданный предел точности, ну а я решил остановиться.

Выходит что 8,1210~1000.00012
С шестадцатиричными числами всё также, только умножаем на 16. Если есть в целой части число, пишем в дробь его, если нет, то пишем 0.

Чтобы сократить число умножений при преобразовании 10-тичной дроби в 2-ичную, вначале её приводят к шестнадцатеричной записи, а потом переводят её в двоичную по методу, описанному выше заменой на тетрады по таблице.

Пример :

Число 0,62510
0,625x16=10 10о в целой части пишем в дробь 0,A
Теперь преобразуем двоичную по таблице 0,10102. (A=1010)
Проверим: 2-1+2-3=0,5+0,125=0,625

Как видите и с дробями ничего сложного. Если кого-либо заинтриговала тема, пишите. Возможно FAQ получит развитие. С уважением, Шеф (chief_exb).


Последнее обновление ( 09.01.2010 г. )