Главная arrow Документация arrow Системы исчисления
29.10.2020 г.

Последние Комментарии

Paper Mario 27.09.2020 г.
Saiyuuki World 22.09.2020 г.
Farm Frenzy Animal Country (NDS) 16.09.2020 г.

Гостевая Книга

ПАУК
Герои на NES ведут не на тот ром -> chief-net.ru/i
Краткие новости
Поздравляем всех вас с Новым 2019-ым годом!
 
Мы немного помогли ещё одному старожилу форума MopoZ-у с завершить перевод фантастической Action RPG на игровую систему SNES. Встречайте, llusion of Gaia, вторая игра из цикла Soul Blazer. Игра содержит в себе множество исторических и мифологических отсылок к локациям и существам, а также затрагивает довольно взрослые темы для детского сюжета. Помимо этого, Guyver завершил перевод неимоверно сложной игры про известного сыщика Шерлока Холмса - Sherlock Holmes - Hakushaku Reijou Yuukai Jiken (NES). Спасти британскую графиню смогут только сильнейшие.

Счастья и здоровья в Новом году!!!

iofgaiya

 
Цитаты
Г. Гейне: "Перевод что женщина - если она красива, она неверна, если верна — некрасива."
Внимание! Всем-всем-всем!
Товарищи! Если у кого-то из вас вдруг завалялись ненужные (или не очень нужные) картриджи денди - не дайте пропасть добру! Приму в дар, скопирую и верну хозяину или куплю/обменяю любые интересные картриджи, особенно редкие или пиратские. С предложениями обращайтесь НА ФОРУМ или В ЛИЧКУ. Подпись: Guyver.
Системы исчисления Печать E-mail
Автор 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 г. )
 
« Пред.   След. »
home contact search contact search