Системы исчисления |
Guyver | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
10.05.2008 . | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
СИСТЕМЫ ИСЧИСЛЕНИЯ (автор: Chief_exb) Оглавление. 1. Введение. 2. Двоичная система. 3. Шестнадцатеричная система. 4. Восьмеричная система исчисления. 5. Преобразование двоичной системы к 16, 8-ричной и обратно. 6. Дроби. Введение. Совсем недавно я обнаружил, что многим нелегко даётся понимание шестнадцатеричной и двоичной систем исчисления. Поэтому этот FAQ я посвящу им. Начнём с простого. Все мы знаем десятичную систему исчисления, так как обычно только с ней и сталкиваешься. Возьмём число 1234.
Число 1234 это ничто иное как 1∙103+2∙102+3∙101+4∙100=1234 Таким образом цифры составляют десятичное число. Если с этим всё понятно, тогда с помощью алгебры можно записать в общем виде уравнение числа любой системы исчисления. Допустим, A-число состоит из n цифр системы исчисления D, тогда его можно записать так: А=аn∙Dn-1+аn-1∙Dn-2+ʌ+а2∙D1+а1∙D0 (Ур.1), где a - цифры этого числа. Теперь о системах исчисления по подробнее. Двоичная система. Если это понятно, то как нам перейти от 10 системы к двоичной? Нужно делить последовательно на два.
Стрелкой показан порядок записи цифр остатков от деления на 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 15∙161+15∙160=15+16=31 1F16=3110 Преобразование из 10 к 16, всё то же деление на D=16
Записываем остатки в обратном порядке и получаем 1F (естественно заменяя 15 на F). Восьмеричная система исчисления. D=8 утратила свое значение, уступив место 16-ричной системе исчисления. Но она всё также преподаётся в университетах и школах. Все то же самое, что и для 16. Применяя уравнение 1, можно записать число 2468 как: 2∙82+4∙81+6∙80=128+32+6=166 2468=16610 Преобразование из 10 к 8, всё то же деление на D=8
Записываем остатки в обратном порядке, получаем 246. Преобразование двоичной системы к 16, 8-ричной и обратно.
На практике такое часто нужно. Как это сделать? Нужно просто заменить двоичные цифры Имеем 2-ичное число 1010001 дополняем спереди его нулями, чтобы количество цифр было кратно 4: 0101 0001, и заменяем полученные тетрады по таблице. Получаем 5116=10100012 . Теперь с 8-миричной системой всё то же самое, только заменяем не тетрады, а триады. Подчёркнутый 0 не учитывать. 11100 дополняем нулями спереди чтобы число цифр было кратно 3. и заменяем по таблице 2: 011 1002=348 . Легко заметить, что обратное преобразованием ничем ни отличается. Допустим 1F16=0001 11112. Или 248=010 1002 Всё очень просто, не правда ли? Дроби. Как дело обстоит с дробями? Описанный формат дроби не соответствует его представлению в памяти персонального компьютера, но изучается в университетах, для базиса знаний. Чтобы перейти потом к сложному. Итак, помните таблицу 1? А что с десятичной дробью? Оказывается всё просто: 1234,12
1∙103+2∙102+3∙101+4∙100+1∙10-1+2∙10-2=1234,12 Уравнение 1 примет вид. А-целое, B-дробное.Число=C=A+B А=аn∙Dn-1+аn-1∙Dn-2+ʌ+а2∙D1+а1∙D0 для целой части И для дробной части. 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 . ) |