Пример: Глобальная сеть INTERNET
Я ищу:
На главную  |  Добавить в избранное  

Главная/

Программирование, базы данных. /

Изучение методики перевода из одной системы исчисления в другую и разработка программы для этой операции

←предыдущая  следующая→
1 2 3 4 5 

 

      Ответственный за курсовой проект:

                   я3РОЗМАХОВ Олег Георгиевичя0    _______________

      Руководитель курсового проекта:

                   я3ИОНИНА Татьяна Давыдовная0    _______________

                   я_я2К У Р С О В О Й      П Р О Е К Т

                        Тема курсового проекта:

        ИЗУЧЕНИЕ ПРОБЛЕМЫ ПЕРЕВОДА ИЗ ОДНОЙ СИСТЕМЫ ИСЧИСЛЕНИЯ

           В ДРУГУЮ И РАЗРАБОТКА ПРОГРАММЫ ДЛЯ ЭТОЙ ОПЕРАЦИИ

                       Студента:      гр. 05-204

                            я2ДЕНЕГИНА Сергея

   я4г. Москва


                         - 1 -

                  я2О Г Л А В Л Е Н И Е

   1. Введение

   2. Постановка задачи

   3. Теоретическая основа решения задачи

   4. Методологический подход

   5. Алгоритм программы для перевода из одной

      системы исчисления в другую

   6. Текст программы с комментариями

   7. Подробные разъяснения по программе

   8. Как пользоваться программой


                         - 2 -

                  я2I.  В В Е Д Е Н И Е

   Проблема перевода из одной системы исчисления в дру-

гую очень часто встречается при программировании.  Осо-

бенно часто  появляется такая проблема при программиро-

вании на Ассемблере.  Например при  определении  адреса

ячейки памяти, для получения двоичного или шестнадцати-

ричного эквивалентов десятеричного числа. Иногда встает

проблема увеличения скорости вычислений, и тогда прихо-

дит на  помощь  двоичная  система  исчисления.  В  этой

системе исчисления  очень  быстро  производить операцию

умножения путем сдвига одного из операндов  в  двоичном

виде влево  на такое число позиций в которой стоит еди-

ница во втором операнде.

   Рассмотрим подробнее  как это осуществляется.  Пусть

нам надо умножить число 1101 на 101 (оба числа в двоич-

ной системе исчисления).  Машина делает  это  следующим

образом: она  берет  число 1101,  и если первый элемент

второго множителя  равен  1 то она заносит его в сумму.

Затем сдвигает число 1101 влево на одну позицию,  полу-

чая тем самым 11010 и если второй элемент второго  мно-

жителя равен единице то тоже заносит его в сумму.  Если

элемент второго множителя равен нулю то сумма не  изме-

няется. В связи с этим,  если второй множитель содержит

много нулей, то операция умножения выполняется довольно


                        - 3 -

долго, т.к.  машина проверяет каждую цифру второго мно-

жителя, в том числе и нули.  Если же самому делать опе-

рацию  умножения то нули можно пропустить и тогда умно-

жение сделается быстрее.

   Что касается  применения  шестнадцатиричной  системы

исчисления то здесь тоже большие  возможности.  Во-пер-

вых,  некоторые стандартные процедуры Паскаля и Си тре-

буют задачи параметров в шестнадцатиричной  системе,  а

во-вторых, такая  система  исчисления  очень удобна для

хранения информации, т.к. число в шестнадцатиричном ви-

де занимает  меньше объема диска чем тоже число в деся-

теричном, а тем более в двоичном виде.

   Таким образом мы убедились, что проблема перевода из

двоичной системы исчисления в десятеричную, из шестнад-

цатиричной в десятеричную и обратно очень актуальна.

                я2II.  ПОСТАНОВКА ЗАДАЧИ

   Из введения стало понятно, что наиболее часто встре-

чающиеся системы исчисления это двоичная,  шестнадцати-

ричная и десятеричная.  Иногда встречается и восьмирич-

ная система исчисления, но это бывает так редко, что не

стоит на этом останавливаться.  Итак,  наша задача осу-

ществить перевод из двоичной системы исчисления в деся-

теричную и шестнадцатиричную,  из десятеричной в двоич-

ную и шестнадцатиричную и из шестнадцатиричной в двоич-

ную и  десятеричную,  т.е.  взаимно связать все эти три

системы исчисления.


                        - 4 -

       я2III.  ТЕОРЕТИЧЕСКАЯ ОСНОВА РЕШЕНИЯ ЗАДАЧИ

   Как же на практике осуществляется перевод  из  одной

системы исчисления в другую? Попробуем разобраться.

   Допустим нам нужно перевести число 567  десятеричной

системы в двоичную систему.  Делается это следующим об-

разом: отыскивается максимальная степень двойки,  чтобы

два в  этой  степени  было  меньше  или равно исходному

числу. В нашем случае это 9,  т.к. 2^9=512, а 2^10=1024

что больше  нашего  начального числа.  Таким образом мы

получили число разрядов результата.  Оно равно  9+1=10.

Значит результат будет иметь вид 1ххххххххх, где вместо

х может стоять 1 или 0. Найдем вторую цифру результата.

Возведем двойку  в  степень  9  и  вычтем  из исходного

числа: 567-2^9=55.  Затем сравниваем с числом  2^8=256.

Так как  55  меньше  256 то девятый разряд будет нулем,

т.е. результат уже примет  вид  10хххххххх.  Рассмотрим

восьмой разряд:  2^7=128 > 55,  значит и восьмой разряд

будет нулем.  Т.к. 2^6=64 то седьмой разряд равен нулю.

Таким образом  мы  получили  четыре  старших  разряда и

число примет вид 1000хххххх.  Вычисляем 2^5=32 и видим,

что 32  <  55,  значит шестой разряд равен 1 (результат

10001ххххх), остаток 55-32=23. 2^4=16 < 23 - пятый раз-

ряд 1  =>  100011хххх.  Остаток  23-16=7.  2^3=8 > 7 =>

1000110ххх. 2^2=4 < 7 => 10001101хх, остаток 3. 2^1=2 <

3 => 100011011х, остаток 1. 2^0=1 = 1 => 1000110111. Мы

получили конечный результат.


                        - 5 -

   Теперь попробуем перевести тоже число 567,  но уже в

шестнадцатиричную систему.  Подход примерно  такой  же.

Определим максимальный разряд.  Т.к.  16^2=256 < 567, а

16^3=4096 > 567,  то максимальный разряд 2+1=3. Опреде-

лим число,  которое  будет  стоять  в  третьем разряде.

Ищется максимальный множитель в пределах от  1  до  15,

чтобы текущая  степень  шестнадцати  умноженная на этот

множитель была меньше или равнялась исходному числу  (а

в дальнейшем - остатку). В нашем примере этот множитель

2, т.к.  256*2=512 < 567,  а 256*3=768  >  567.  Значит

старший разряд  нашего результата будет равен я22я0,  и ре-

зультат примет вид 2хх, где вместо х могут стоять любые

цифры или      буквы     из     ниже     перечисленных:

0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. Вычисляем     остаток:

567-2*16^2=55. Определим  что  будет  стоять  во втором

разряде. Так как 3*16^1=48 < 55,  а 4*16^1=64 > 55,  то

во втором   разряде   будет   стоять   цифра  я23я0.  Оста-

ток=55-3*16^1=7. Определяем первый разряд:  т.к. 16^0=1

то цифра первого разряда равна остатку,  т.е.  я27я0. Таким

образом мы получили число я2237я0, но уже в шестнадцатирич-

←предыдущая  следующая→
1 2 3 4 5 


Copyright © 2005—2007 «RefStore.Ru»