Учебная работа. Курсовая работа: Системы счисления, переводы чисел
РОССИЙСКОЙ ФЕДЕРАЦИИ.
ИРКУТСКИЙ ГОСУДАРСТВЕННЫЙ
технический УНИВЕРСИТЕТ.
ФАКУЛЬТЕТ КИБЕРНЕТИКИ.
КАФЕДРА ВЫЧИСЛИТЕЛЬНОЙ техники.
Курсовая работа по информатике
На тему:
системы счисления, переводы чисел.
Выполнил: студент Иванов Д. Г.
Группы ЭВМ 05-3
Проверил: Горохов А.Г.
ИРКУТСК 2006 г
Оглавление.
Оглавление………………………………………………………………………..1
Глава 1.История развития систем счисления……..………………………..2
1.1 Зарождение систем счисления………………………………………………2
1.2 Образование десятичной системы счисления……………………………….4
Глава 2. Системы счисления…………….…………………………………..5
2.1Позиционные и непозиционные системы счисления………………………5
2.2 Двоичная(бинарная) система счисления…………………………………….6
2.3. Восьмеричная система счисления…………………………………………..6
2.4. Десятеричная система счисления……………………………………………6
2.5. Шестнадцатеричная система счисления……………………………………7
Глава 3. машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач)…………………………………..8
3.1 способ деления……………………………………………………………..13
4.2.2 Способ умножения………………………………………………………….14
5.Постановка задачки………………………………………………………15
6.Наружное проектирование программки…………………………………15
7.Математическая модель…………………………………………………16
8.Кодирование и отладка программки….…………………………………17
9.Таблица тестов…………………………………………………………..23
10.Перечень литературы………………………………………..…………..24
Глава 1.История развития систем счисления.
1.1 Зарождение систем счисления.
На ранешних ступенях развития общества люди практически не умели считать. Они отличали друг от друга совокупы 2-ух и 3-х предметов; всякая совокупа, содержавшая большее число предметов, объединялась в понятии «много». Это был еще не счет, а только его эмбрион.
Потом способность различать друг от друга маленькие совокупы развивалась; появились слова для обозначений понятий «четыре», «5», «6», «семь». Крайнее слово долгое время обозначало также неопределенно огромное количество.
С усложнением хозяйственной деятельности людей пригодилось вести счет в наиболее широких границах. Для этого человек воспользовался окружавшими его предметами, как инструментами счета: он делал засечки на палках и на деревьях, завязывал узлы на веревках, складывал камни в кучки и т.п. Это комфортно, потому что сходу зрительно определяется количество символов и сопоставляется с количеством предметов, которые эти знаки обозначают. Все мы прогуливались в 1-ый класс и считали там на счетных палочках – это отзвук той дальной эры. К слову, от счета при помощи камешков ведут свое начало разные улучшенные инструменты, как, к примеру, российские счеты, китайские счеты («сван-пан»), древнеегипетский «абак» (доска, разбитая на полосы, куда клались жетоны). Подобные инструменты существовали у почти всех народов. Наиболее того, в латинском языке понятие «счет» выражается словом «
» (отсюда наше слово «калькуляция»); а происходит оно от слова «
», значащего «камешек».
Особо важную роль играл природный инструмент человека – его пальцы. Этот инструмент не мог продолжительно хранить итог счета, но зато постоянно был «под рукою» и различался большенный подвижностью. язык первобытного человека был беден; жесты возмещали недочет слов, и числа, для которых еще не было заглавий, «показывались» на пальцах.
Потому, полностью естественно, что вновь возникавшие наименования «огромных» чисел нередко строились на базе числа 10 – по количеству пальцев на руках; у неких народов появлялись также наименования чисел на базе числа 5 – по количеству пальцев на одной руке либо на базе числа 20 – по количеству пальцев на руках и ногах.
На первых порах расширение припаса чисел происходило медлительно. Поначалу люди обуяли счетом в границах нескольких 10-ов и только позже дошли до сотки. У почти всех народов число 40 длительное время было пределом счета и заглавием неопределенно огромного количества. В российском языке слово «сороконожка» имеет смысл «многоножка»; выражение «40 сороков» означало в старину число, превосходящее всякое воображение.
На последующей ступени счет добивается новейшего предела: 10 10-ов, и создается заглавие для числа 100. совместно с тем слово «100» приобретает смысл неопределенно огромного числа. Таковой же смысл получают позже поочередно числа тыща, 10 тыщ (в старину это число именовалось «тьма»), миллион.
На современном шаге границы счета определены термином «бесконечность», который не обозначает, какое или конкретное число.
Обозначение чисел в различных системах счисления
1.2 Образование десятичной системы счисления.
В современном российском языке, также в языках остальных народов наименования всех чисел до миллиона составляются из 37 слов, обозначающих числа 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 , 12, 13, 14, 15, 16, 17, 18, 19, 20, 30, 40, 50, 60, 70, 80, 90, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 (к примеру, восемьсот пятнадцать тыщ триста девяносто четыре). В свою очередь наименования этих 37 чисел, как правило, образованы из заглавий чисел первого 10-ка (1, 2, 3, 4, 5, 6, 7, 8, 9) и чисел 10, 100, 1000 (к примеру, 18 = восемь на 10, 30 = тридесять и т.д.). В базе этого словообразования лежит число 10, и потому наша система наименований именуется десятичной системой счисления.
Из упомянутого правила в различных языках имеются разные исключения, объясняющиеся историческими чертами развития счета. В российском языке единственным исключением является наименование «40». Это исключение можно поставить в связь с тем, что число 40 игралось некогда необыкновенную роль, означая неопределенно огромное количество.
В тюркских языках (узбекском, казахском, монгольском, башкирском, турецком и др.) исключение составляют наименования чисел 20, 30, 40, 50, тогда как наименования чисел 60, 70, 80, 90 образованы из наименований для 6, 7, 8, 9. Во французском языке сохранились недесятичные наименования чисел 20 и 80, при этом 80 называется
, т.е. «четыре 20». тут мы имеем остаток старого двадцатеричного счисления (по числу пальцев на руках и ногах). В латинском языке наименование числа 20 тоже недесятичное (
). Наименования чисел 18 и 19 образованы из наименования 20 при помощи вычитания: 20–2 и 20–1 (
,
, т.е. «два от 20», «один от 20»).
Глава 2. системы счисления.
2.1Позиционные и непозиционные системы счисления.
именуют систему приемов и правил, позволяющих устанавливать взаимнооднозначное соответствие меж хоть каким числом и его представлением в виде совокупы конечного числа знаков. Огромное количество знаков, применяемых для такового представления, именуют
.
системы счисления делятся на два класса позиционные и непозиционные.
В непозиционных системах хоть какое число определяется как некая функция от численных значений совокупы цифр, представляющих это число. Простая, но полностью неловкая система счисления. Базирована на единственной цифре – единице (палочке). Дозволяет записывать лишь натуральные числа. Чтоб представить число в данной системе счисления необходимо записать столько палочек, каково само число. Использовалась нецивилизованными племенами, потребности которых в счете, обычно, не выходили за рамки первого 10-ка. Чисто формально единичную систему счисления можно отнести к числу главных (с основанием 1). Но, в отличие от других главных систем счисления, считать ее позиционной можно только с весьма мощной натяжкой, а всепригодной она совершенно не является (в ней недозволено представить ноль, дроби и отрицательные числа). Римская система счисления. При помощи 7 цифр – I=1 , V=5 , X=10 , L=50 , C=100 , D=500 , M=1000 – можно очень удачно и достаточно выразительно представлять натуральные числа в спектре до нескольких тыщ.
Исторически первыми системами счисления были конкретно непозиционные системы. Одним из главных недочетов является трудность записи огромных чисел. Запись огромных чисел в таковых системах или весьма громоздка, или алфавит системы очень велик.
В вычислительной технике непозиционные системы не используются, но продолжают ограниченно употребляться для указания порядковых числительных (часов, веков, номеров съездов либо конференций и т.п.).
– система счисления, в какой вес числа изменяется с конфигурацией положения числа в числе, но при всем этом вполне определяется написанием числа и местом, которое она занимает. А именно, это значит, что вес числа не зависит от значений окружающих ее цифр. Таковая система счисления основывается на том, что некое число n единиц ( основание системы счисления ) соединяются воединыжды в одну единицу второго разряда, n единиц второго разряда соединяются воединыжды в одну единицу третьего разряда и т. д. Основанием систем счисления быть может хоть какое число, больше единицы. К числу таковых систем относится современная десятичная система счисления ( с основанием n=10 ). В ней для обозначения первых 10 чисел служат числа 0,1,…,9.
Невзирая на кажущуюся естественность таковой системы, она явилась результатом долгого исторического развития. Появление десятичной системы счисления связывают со счетом на пальцах.
В отличии от непозиционной системы счисления, позиционная система счисления применяется в ЭВМ .
2.2 Двоичная(бинарная) система счисления.
В реальный момент – более употребительная в информатике, вычислительной технике и смежных отраслях система счисления. Употребляет две числа – 0 и 1, также знаки «+» и «–» для обозначения знака числа и запятую (точку) для разделения целой и дробной части. Таковым образом, в двоичном счислении хоть какое число можно представить 2-мя числами: 0 и 1. Для представления этих чисел в цифровых системах довольно иметь электрические схемы, которые могут принимать два состояния, верно различающиеся значением какой-нибудь электронной величины – потенциала либо тока. Одному из значений данной величины соответствует цифра 0, другому 1. Относительная простота сотворения электрических схем с 2-мя электронными состояниями и привела к тому, что двоичное развития двоичной системы счисления – одна из ярчайших страничек в истории математики. Официальное «рождение» двоичной математики связывают с именованием Г. В. Лейбница, опубликовавшего статью, в какой были рассмотрены правила выполнения всех арифметических операций над двоичными числами. До начала 30-х годов XX века двоичная система счисления оставалась вне поля зрения прикладной арифметики. Потребность в разработке надежных и обычных по конструкции счетных механических устройств и простота выполнения действий над двоичными числами привели к наиболее глубочайшему и активному исследованию особенностей двоичной системы как системы, подходящей для аппаратной реализации. 1-ые двоичные механические вычислительные машинки были построены во Франции и Германии. Утверждение двоичной математики в качестве принятой базы при конструировании ЭВМ с программным управлением состоялось под бесспорным воздействием работы А. Бекса, Х. Гольдстайна и Дж. Фон Неймана о проекте первой ЭВМ с хранимой в памяти программкой, написанной в 1946 году. В данной работе более аргументировано обусловлены предпосылки отказа от десятичной математики и перехода к двоичной системе счисления как базе машинной математики.
2.3. Восьмеричная система счисления.
Употребляет восемь цифр – 0, 1, 2, 3, 4, 5, 6, и 7, также знаки «+» и «–» для обозначения знака числа и запятую (точку) для разделения целой и дробной частей числа. Обширно использовалась в программировании в 1950-70-ые гг. К истинному времени фактически вполне вытеснена шестнадцатеричной системой счисления, но функции перевода числа из десятичной системы в восьмеричную и назад сохраняются в микрокалькуляторах и почти всех языках программирования.
2.4. Десятеричная система счисления.
Употребляет 10 обыденных цифр – 0, 1, 2, 3, 4, 5, 6, 7, 8 и 9, также знаки «+» и «–» для обозначения знака числа и запятую (точку) для разделения целой и дробной частей числа. Существует общее заблуждение, как будто конкретно десятичная система счисления является более употребительным методом записи чисел. Меж тем, наиболее внимательный анализ правил чтения и записи чисел приводит к другому выводу: система счисления, которой мы обычно пользуемся, практически является двойной, потому что имеет основания – 10 и 1000. А именно, в российском языке известны наименования лишь для первых 7 разрядов десятичной системы счисления ( 1 – единица, 10 – десяток, 100 – сотка, 1000 – тыща, 10000 – тьма, 100000 – легион, 1000000 – миллион ), но предпоследние два из их (легион и тьма) издавна вышли из потребления, а примыкающие с ними (миллион и тыща) – наименования классов, а не только лишь разрядов. Итак, практически в российском языке остались только два самостоятельных наименования для десятичных разрядов: десяток и сотка. В остальных языках – подобная ситуация.
2.5. Шестнадцатеричная система счисления.
Употребляет шестнадцать цифр – 0, 1, 2, 3, 4, 5, 6, 7, 8 и 9 в их обыкновенном смысле, а потом A=10, B=11 , C=12 , D=13 , E=14 , F=15 . Также употребляет знаки «+» и «–» для обозначения знака числа и запятую (точку) для разделения целой и дробной частей числа. Внедрена американской компанией IBM. Обширно употребляется в программировании для IBM-совместимых компов. С иной стороны, в неких языках сохранились и следы использования данной системы счисления в прошедшем. К примеру, в романских языках (испанском, французском и др.) числительные от 11 до 16 образуются по одному правилу, а от 17 до 19 – по другому. А в российском языке известен пуд, равный 16 килограммам.
BIN
OCT
DEC
HEX
0
0
0
0
001
1
1
1
010
2
2
2
011
3
3
3
100
4
4
4
101
5
5
5
110
6
6
6
111
7
7
7
1 000
10
8
8
1 001
11
9
9
1 010
12
10
A
1 011
13
11
B
1 100
14
12
C
1 101
15
13
D
1 110
16
14
E
1 111
17
15
F
10 000
20
16
10
Глава 3. машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач).
3.1 машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) «запись» числа осуществляется при помощи технических устройств, то для представления его в таковой форме нужно располагать устройствами с 2-мя накрепко разными состояниями, которым могут быть сопоставлены значения 0 либо 1. Композиция таковых устройств, число которых соответствует количеству разрядов записываемого числа, быть может применена для представления чисел в ЭВМ .
В качестве таковых устройств, могут быть применены триггеры. Набор триггеров, созданных для представления чисел в ЭВМ , также для выполнения над ними неких логических преобразований, именуется регистром. Очевидно, число разрядов, отведенное для записи числа, соответственное числу триггеров, в ЭВМ постоянно естественно. Выбор количества разрядов для представления чисел в ЭВМ является одним из самых ответственных шагов конструирования вычислительной машинки и обуславливается целым требований, посреди которых одно из важных – нужная точность вычислений.
В ЭВМ используются две главные формы представления чисел: полулогарифмическая –
и естественная –
.
При представлении чисел с фиксированной запятой положение запятой закрепляется в определенном месте относительно разрядов числа и сохраняется постоянным для всех чисел, изображаемых в данной разрядной сетке. Обычно запятая фиксируется перед старшим разрядом либо опосля младшего. В первом случае в разрядной сетке могут быть представлены лишь числа, которые по модулю меньше 1, во 2-м – лишь целые числа.
Внедрение представления чисел с фиксированной запятой дозволяет упростить схемы машинки, повысить ее быстродействие, но представляет определенные трудности при программировании. В истинное время представление чисел с фиксированной запятой употребляется как основное лишь в микроконтроллерах.
В всепригодных ЭВМ главным является машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) предусмотрена возможность использования формата двойной длины, но при всем этом происходит повышение издержек памяти на хранение данных и замедляются вычисления.
Разглядим подробнее эти два формата.
3.2 Числа с фиксированной запятой.
формат для чисел с запятой, фиксированной перед старшим разрядом. В этом формате могут быть с точностью до
представлены числа (правильные дроби) в спектре
.
1-ые ЭВМ были машинками с фиксированной запятой, при этом запятая фиксировалась перед старшим разрядом числа. В истинное время, обычно, форму с фиксированной запятой используют для представления целых чисел (запятая фиксирована опосля младшего разряда).
Употребляют два варианта представления целых чисел: со знаком и без знака. В крайнем случае все разряды разрядной сетки служат для представления модуля числа. В ЕС ЭВМ используются оба обозначенных варианта представления целых чисел, при этом любой из вариантов реализуется как в формате 32-разрядного машинного слова этих машин, так и в формате 16-разрядного полуслова.
При выполнении арифметических действий над правильными дробями могут получаться двоичные числа, по абсолютной величине больше либо равные единице, что именуется переполнением разрядной сетки. Для исключения способности переполнения приходится масштабировать величины, участвующие в вычислениях.
Достоинство представления чисел в форме с фиксированной запятой состоит в простоте выполнения арифметических операций.
Недочеты – в необходимости выбора масштабных коэффициентов и в низкой точности представления с малыми значениями модуля (нули в старших разрядах модуля приводит к уменьшению количества разрядов, занимаемых означающей частью модуля числа).
3.3 Числа с плавающей запятой.
При использовании плавающей запятой число состоит из 2-ух частей:
, содержащейзначащие числа числа, и
, показывающего степень, в которую нужно возвести основание числа
, чтоб приобретенное при всем этом число, умноженное на мантиссу, давало настоящее
(5.1)
Мантисса и порядок представляются в двоичном коде. Обычно число дается в нормализованном виде, когда его мантисса является правильной дробью, при этом 1-ая означающая цифра (единица) следует конкретно опосля запятой: к примеру, где
=0,1010;
10
2
порядок показывает действительное положение запятой в числе. Код в приведенном формате представляет .
Точность представления значений зависит от количества означающих цифр мантиссы. Для увеличения точности числа с плавающей запятой представляются в нормализованной форме, при которой . Признаком нормализованного числа служит наличие единицы в старшем разряде модуля мантиссы. В нормализованной форме могут быть представлены все числа из некого спектра кроме нуля.
Нормализованные двоичные числа с плавающей запятой представляют значения модуля в спектре:
,
где – наибольшее значение модуля порядка.
Так, при
=7 –1==63 и спектр представления модулей нормализованных чисел:
,
Таковым образом, спектр чисел:
Для расширения спектра представляемых чисел при фиксированной длине разрядной сетки (
) в качестве основания системы счисления выбирается . При всем этом число, представляемое в разрядной сетке, приобретает значения . Нормализованная мантисса 16-ричного числа с плавающей запятой имеет значения, лежащее в спектре . Признаком нормализации такового числа является наличие хотя бы одной единицы в 4 старших разрядах модуля мантиссы. Спектр представления чисел в этом случае значительно расширяется, находясь при том же количестве разрядов в границах от до .
m m – 1 1 p p – 1 1
…
…
символ Модуль мантиссы Символ Модуль порядка
числа порядка
3.3 Прямой,
оборотный и доп коды. Измененный код
При рассмотрении простых арифметических операций над двоичными числами мы уже задели темы отрицательных двоичных чисел. сейчас разглядим ее подробнее.
Для кодировки знака двоичного числа употребляется старший («
«) разряд (ноль соответствует плюсу, единица – минусу).
Таковая форма представления числа именуется
.
В ЭВМ прямой код применяется лишь для представления положительных двоичных чисел. Для представления отрицательных чисел применяется или доп, или оборотный код, потому что над отрицательными числами в прямом коде неловко делать арифметические операции.
Правила для образования доп и оборотного кода состоят в последующем:
· для образования доп кода отрицательного числа нужно в знаковом разряде поставить единицу, а все цифровые разряды инвертировать (поменять 1 на 0, а 0 – на 1), опосля что прибавить 1 к младшему уровню;
· для образования оборотного кода отрицательного числа нужно в знаковом разряде поставить единицу, а все цифровые разряды инвертировать;
· при данных преобразованиях необходимо учесть размер разрядной сетки.
Прямой код можно получить из доп и оборотного по этим же правилам, которые служат для нахождения доп и оборотного кодов.
В таблице 5.1 пpиведены десятичные числа и их двоичные пpедставления в тpех pазличных фоpмах. Интеpесно в ней вот что. Если начать счет с числа 1000 (–8) и двигаться вниз по столбцам, то в доп коде каждое следующее число выходит пpибавлением единицы к пpедыдущему без учета пеpеноса за пpеделы четвеpтого pазpяда Так пpосто эту опеpацию в пpямом и обpатном кодах не выполнить. Эта изюминка доп кода и явилось пpичиной пpедпочтителного пpименения его в совpеменных микpо и миниЭВМ.
Итак, числа, пpедставленные в доп коде, складываются по пpавилам двоичного сложения, но без учета каких или пеpеносов за пpеделы стаpшего pазpяда. Рассмотpим это на пpимеpах 5.1.
Десятичное
число
Прямой
код
Оборотный
код
Доп
код
-8
–
–
1000
-7
1111
1000
1001
-6
1110
1001
1010
-5
1101
1010
1011
-4
1100
1011
1110
-3
1011
1100
1101
-2
1010
1101
1110
-1
1001
1110
1111
0
1000
0000
1111
0000
0000
1
0001
0001
0001
2
0010
0010
0010
3
0011
0011
0011
4
0100
0100
0100
5
0101
0101
0101
6
0110
0110
0110
7
0111
0111
0111
Еще одним достоинством доп кода будет то, что нуль, в отличие от пpямого и обpатного кодов, пpедставляется одним кодом. наличие 0 в знаковом бите пpи пpедставлении нуля опpеделяет его как величину положительную, что согласуется с математической теоpией чисел и соглашениями, пpинятыми во всех языках пpогpаммиpования.
Из приведенных примеров следует, что положительные числа в прямом, оборотном и доп кодах совпадают. В прямом и оборотном коде нуль имеет два представления – «положительный» и «отрицательный» нуль.
Отметим, что при представлении с плавающей запятой раздельно кодируется мантисса и порядок числа. При всем этом может быть к примеру, порядок числа быть может представлен в прямом, а мантисса – в доп кодах и т. п.
Таковым образом, используя оборотный и доп коды, операцию алгебраического сложения можно свести к арифметическому сложению кодов чисел, которое распространяется и на разряды символов, которые рассматриваются как разряды целой части числа.
При сложении чисел, наименьших единицы, в машине быть получены числа, по абсолютной величине огромные единицы. Для обнаружения переполнения разрядной сетки в ЭВМ используются
. В этих кодах символ кодируется 2-мя разрядами, при этом знаку «плюс» соответствует композиция 00, а знаку «минус» — композиция 11.
Правила сложения для измененных кодов те же, что и для обыденных. Единица переноса из старшего знакового разряда в измененном доп коде отбрасывается, а в измененном оборотном коде передается в младший цифровой разряд.
Признаком переполнения служит возникновение в знаковом разряде суммы композиции 01 при сложении положительных чисел (
) либо 10 при сложении отрицательных чисел (
). Старший знаковый разряд в этих вариантах содержит настоящее необходимо двинуть в разрядной сетке на один разряд на право, а в освободившийся старший знаковый разряд поместить цифру, равную новенькому значению младшего знакового разряда. Опосля корректировки переполнения мантиссы результата нужно прирастить на единицу порядок результата.
Глава 4. Перевод чисел.
4.1 совсем разумеется, что двоичное число представляется последовательностью нулей и единиц – разрядов. Как и в хоть какой позиционной системе, любому уровню присвоен определенный вес – показатель степени основания системы. Веса первых 10 позиций представлены в таблице.
Позиция
9
8
7
6
5
4
3
2
1
0
Вес
512
256
128
64
32
16
8
4
2
1
Образование
В двоичной системе счисления даже сравнимо маленькие числа занимают много позиций.
Как и в десятичной системе, в двоичной системе счисления для отделения дробной части употребляется точка (
). Любая позиция слева от данной точки также имеет собственный вес – вес разряда дробной части числа. Значение веса в этом случае равно основанию системы счисления (т.е. двойке), возведенному в отрицательную степень.
Получить десятичное число из двоичного очень просто. Согласно формуле
для двоичной системы счисления получаем:
Пример иллюстрирует процесс получения десятичного числа из двоичного.
4.2 Преобразование десятичных чисел в двоичные
Перевод из двоичной системы в десятичную несколько труднее. Разглядим несколько алгоритмов.
4.2.1 способ деления
Иным способом является так именуемый способ деления. Он применяется для преобразования целых чисел. Ниже приведен его метод.
Разделим нацело десятичное число на двойку. Если есть остаток, запишем в младший разряд единицу, а если нет – нуль и опять разделим итог от первого деления. Повторим функцию так до того времени, пока окончательный итог не обнулиться.
Пример 4.3
2
148
–
74
2
1
74
–
37
2
0
36
–
18
2
1
18
–
9
2
0
8
–
4
2
1
4
–
2
2
0
2
–
1
2
0
0
0
1
¬
старший разряд
(10010101)2
=(149)10
¬ ответ
4.2.2 способ умножения
И, в конце концов, способ умножения. Способ применяется для преобразования десятичных дробей (чисел наименьших единицы).
Число множится на 2, если итог ³ 1, то в старший разряд записывается единица, если нет, то нуль. Умножаем на 2 дробную часть результата и повторяем функцию. И так дальше до получения подходящей степени точности либо до обнуления результата.
5.Постановка задачки.
Более нередко встречающиеся системы счисления это двоичная, десятеричная и шестнадцатеричная система счисления, восьмеричная система счисления встречается лишь в инженерных калькуляторах, практическое же внедрения её издавна закончилось. Итак, наша задачка выполнить перевод целых чисел из одной системы счисления в другую. Для этого выберем двоичную, восьмеричную, десятеричную и шестнадцатеричную систему счисления.
6.Наружное проектирование программки.
Для наглядности программку перевода лучше изобразить в виде нацеленного графа. Но если перевод производить по данной схеме, то
код программки будет массивным. Потому что будет огромное количество алгоритмов перевода.
Чтоб упростить программку я решил переводить с двоичной, восьмеричной, десятеричной и шестнадцатеричной системы счисления в десятеричную систему. Из десятеричной системы перевод осуществляется в всякую из предложенных.
7.Математическая модель.
Для перевода из 2, 8, 10, 16 систем счисления в десятичную систему использую формулу:
AiMi,
где Ai – системы счисления.
Пример:
Число 326 в десятичной системе можно записать так 3*102+2*101+6*100=326
Число 100110 в двоичной системе можно записать так 1*25+0*24+0*23+1*22+1*21+0*20=38.
Для перевода из десятичной системы счисления в 2, 8, 10, 16 используем метод:
repeat
c := a mod e;
if (e = 16) and (c>9) then l:= l + chr(c+55) else l:= l + chr(c+48);
if a <> 0 then b := a div e;
if b<e then if (e = 16) and (b>9) then l:= l + chr(b+55) else l:= l + chr(b+48);
a := b;
until (b<e) or (a = 0).
В итоге разработки программки я столкнулся с неувязкой возведения целого числа в степень. Для этого мне пришлось создать метод возведения целого числа в степень.
var
i,y: integer;
begin
y:=1;
fori:= 1 tondo{Цикл задает число умножений}
y := y*x;{множит число которое требуется возвести в цикл на Yи присваивает
step := y;
end;
8.Кодирование и отладка программки.
Для кодировки программки используем среду программирования BorlandDelphi 7 Enterpriseedition. Для начала я сделал форму, в какой имеется строчка для ввода инфы две группы радио клавиш и клавиша «перевести».
Для работы выбраны библиотеки(uses)
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, ComCtrls;
Типыданных:
type
TForm1 = class(TForm)
Edit1: TEdit;
RadioGroup1: TRadioGroup;
Label1: TLabel;
Button1: TButton;
RadioGroup2: TRadioGroup;
Label2: TLabel;
Label3: TLabel;
StatusBar1: TStatusBar;
procedure Edit1Change(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure RadioGroup2Click(Sender: TObject);
private
{ Private declarations }
public
{ Publicdeclarations }
end;
В разделе описания идентификаторов внесены последующие пункты:
Form1: TForm1; {форма окна}
vv1 : string; {переменная типа (целое число)stringдля ввода инфы в строчку «переводимое число»}
m,m1,ch1, i : integer;{переменные строкового типа(string) m, m1 употребляется для радиогрупп «Начальная система» и «Конечная система», ch1 вспомогательная переменная для перевода чисел, Iпеременная для циклов,}
implementation
{$R *.DFM}
В программке применены последующие функции и процедуры.
1)Функция переводит данные из типа charв тип integer. Входные данные это переменная «a» типа char, выходные данные типа integer. Принцип работы программки состоит в том, что переменная «а» переводиться в ASCIIкод, и отнимается определённое число(55,48,87), вследствие что выходит число в десятичном виде. 55 — отнимается если знак «а» в спектре [‘A’..‘F’], 87 – если спектр [‘a’..‘f’] и 48 – если спектр [‘0’..‘9’].
function perevod0(a:char):integer;
var
c: integer;
begin
case a of
‘A’..’F’: c := ord(a) — 55;
‘a’..’f’: c := ord(a) — 87;
‘0’..’9′: c := ord(a) — 48;
end;
perevod0 := c;
end;
2) Функция переводит из десятичной системы в систему Е. «A» — переменная типа integer, служит для ввода десятичного числа. Переменная «е» типа integerслужит для ввода системы счисления в которую необходимо перевести число в моей программке e := m1(т.е. то что выбирается в радиогруппе «Конечная система »)
function perevod1(a:integer;e: integer): string;
var
l,j : string;
z,c,b,d: integer;
begin
repeat{Начало цикла}
c := amode;{с это остаток от деления десятичного числа на систему счисления }
if (e = 16) and (c>9) thenl:= l + chr(c+55) elsel:= l + chr(c+48);{Если система счисления шестнадцатеричная и остаток от деления больше 9, то число становиться от Aдо F, по другому число записывается от 0 до 9}
ifa <> 0 thenb := adive;{Если а неравно нулю то bприсваивается целочисленное деление а на е}
if b<e then if (e = 16) and (b>9) then l:= l + chr(b+55) else l:= l + chr(b+48);
{Если B меньше системы счисления, то если система счисления шестнадцатеричная и остаток от деления больше 9, то число становиться от Aдо F, по другому число записывается от 0 до 9}
a := b; {aприсваивается b}
until (b<e) or (a = 0);{Цикл производится пока bменьше системы счисления (е) либо десятичное число «а» станет равно 0}
fori:= length(l) downto 1 do{Цикл который идет вспять т.е 3,2,1}
if (l[i]=’0′) and (z = 0) thenelsebeginj:=j+ l[i]; z:=1 end;{Условный оператор переворачивает строчку задом наперед}
perevod1 := j;
end;
3) Функция инспектирует, введены ли числа в спектре [‘0’..‘9’, ‘A’..‘F’, ‘a’..‘f’], и включены ли радиогруппы. Vv1 – строчка ввода типа string.
Вывод типа integerесли ошибка равно 1 по другому 0.
function error1(vv1:string):integer;
begin
fori := 1 tolength(vv1) do {цикл от 1-го до конца строчки ввода вспомогательная переменная i}
ifvv1 = » thenerror1 :=1{Если строчка ввода пустая то error1 присваивается 1}
else{по другому, если vv1[i]=’0′..’9′,’a’..’f’,’A’..’F’ не какого деяния не происходит, по другому error1 присваивается 1}
begin
case vv1[i] of
‘0’..’9′,’a’..’f’,’A’..’F’:;
else error1 :=1;
end;
end;
end;
4) Функция возводит целое число в степень. x– это число в которое требуется возвести в степень, N– степень в которую нужно возвести число вывод инфы в типе integer.
function step(n:integer; x : integer): integer;
var
y: integer;
begin
y:=1;
fori:= 1 tondo{Цикл задает число умножений}
y := y*x;{множит число которое требуется возвести в цикл на Yи присваивает
step := y;
end;
5) Присваивает переменной vv1 входные данные.
procedure TForm1.Edit1Change(Sender: TObject);
begin
vv1:= edit1.text;
end;
6)Функция присваивает радиогруппе «Начальная система»
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
case radiogroup1.ItemIndex of { ОпределяетItemIndex иприсваиваетm данныетипаinteger согласноусловию}
0: m:=2;
1: m:=8;
2: m:=10;
3: m:=16;
end;
end;
7)Функция срабатывает на нажатие клавиши «Перевести». Переводит из 2,8,10,16-ой системы счисления в десятичную систему передаёт данные bвыполняет функцию perevod0.Так же выводит приобретенный итог на экран.
procedure TForm1.Button1Click(Sender: TObject);
var
n : integer;
begin
if error1(vv1) <> 1 then {Еслиerror1 неравно 1 то }
begin
ch1 :=0;
for i := 0 to length(vv1)-1 do {НачалоциклаFOR}
begin
n:=perevod0(vv1[length(vv1)-i])*step(i,m);{выполняетсяформулаAiMi}
ch1 := ch1+n;
end;
label1.Caption := perevod1(ch1,m1);{Наэкранвыводитьсяпереведённоечисло}
end
else label1.Caption := ‘ОШИБКАВВОДА!!!’; {иначенаэкранвыводиться ‘ОШИБКАВВОДА!!!’; }
end;
8) Функция присваивает радио группе Начальная система
begin
case radiogroup2.ItemIndex of{ ОпределяетItemIndex иприсваиваетm данныетипаinteger согласноусловию}
0: m1:=2;
1: m1:=8;
2: m1:=10;
3: m1:=16;
end;
end;
end.
9.Таблица
тестов
.
№
Входные данные
Приобретенное число
Примечание
Переводимое число
Начальная система
Конечная система
1
1011
2
2
1011
Испытания предложенные на проверку корректности перевода
2
1011
2
8
13
3
1011
2
10
11
4
1011
2
16
B
5
17
8
2
1111
6
17
8
8
20
7
17
8
10
15
8
17
8
16
F
9
254
10
2
11111110
10
254
10
8
376
11
254
10
10
254
12
254
10
16
FE
13
adf34
16
2
10101101111100100000
14
adf34
16
8
2557464
15
adf34
16
10
712500
16
adf34
16
16
ADF34
17
212
16
10
530
18
ропл
2
16
ОШИБКА ВВОДА!!!
Испытания на ошибку ввода
19
adf323g
2
16
ОШИБКА ВВОДА!!!
20
пустая строчка
8
10
ОШИБКА ВВОДА!!!
10.Перечень литературы.
1. Кодирование инфы (Двоичные коды). Березнюк Н. Т. Андрущенко А. Г. И др. Харьковю 1978.
2. Выгодский М.Я. Справочник по простой арифметике, М.: Государственное издательство технико-теоретической литературы, 1956.
3. Каган Б.М. электрические вычислительные машинки и системы, М.: Энергоатомиздат, 1985.
4. Майоров С.А., Кириллов В.В., Приблуда А.А., Введение в микроЭВМ, Л.: Машиностроение, 1988.
5. Фомин С.В. системы счисления, М.: Наука, 1987.
6. Ролич Ч. Н. – От 2 до 16, Минск, «Высшая школа», 1981г.
7. Математическая энциклопедия. М: “Русская энциклопедия” 1985г.
8. Шауман А. М. Базы машинной математики. Ленинград, Издательство Ленинградского института. 1979г.
9. Калабеков Б. А. Цифровые устройства и микропроцессорные системы. М: “Жгучая линия — Телеком” 2000г.
10.Ворощук А. Н. Базы ЦВМ и программирования. М:”Наука” 1978г.
11.Алексенко А. Г. Микросхемотехника. М: ”Радио и связь” 1990г.
]]>