Автор: Пользователь скрыл имя, 18 Ноября 2010 в 22:44, курсовая работа
В вычислительной технике на ряду с десятичной системой исчисления используется восьмеричная и шестнадцатеричная. Ручной перевод хотя и достаточно прост но требует много времени. Для решения данного задания необходимо составить программу, которая переводит числа из разных систем счисления в другие системы счисления.
1. Введение 4
2. Постановка задачи 4
3. Правила перевода для разных систем счисления 4
3.1. Правило перевода из шестнадцатеричной в восьмеричную систему счисления 4
3.2. Правило перевода из восьмеричной в шестнадцатеричную систему счисления 5
4. Укрупненная блок-схема 6
4. Подробная блок-схема программы 7
5. Текст программы 16
6. Ручной просчет контрольного примера 21
7. Машинный просчет контрольного примера 21
8. Заключение 22
10. Используемая литература 23
ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ
Рязанская
государственная радиотехническая
академия
Кафедра
САПР ВС
Пояснительная
записка к курсовому проекту по дисциплине
«Информатика»
тема:
«Системы счисления
и коды»
Разработал ст. гр. 445
Бирюков С.А.
Проверил
Орехов
В.В
Рязань
2005г.
Оглавление
1. Введение 4
2. Постановка задачи 4
3. Правила перевода для разных систем счисления 4
3.1. Правило перевода из шестнадцатеричной в восьмеричную систему счисления 4
3.2. Правило перевода из восьмеричной в шестнадцатеричную систему счисления 5
4. Укрупненная блок-схема 6
4. Подробная блок-схема программы 7
5. Текст программы 16
6. Ручной просчет контрольного примера 21
7. Машинный просчет контрольного примера 21
8. Заключение 22
10.
Используемая литература 23
1.
Введение.
В
вычислительной технике на ряду с
десятичной системой исчисления используется
восьмеричная и шестнадцатеричная. Ручной
перевод хотя и достаточно прост но требует
много времени. Для решения данного задания
необходимо составить программу, которая
переводит числа из разных систем счисления
в другие системы счисления.
2.
Постановка задачи.
Программа
должна считывать из файла исходные
данные в восьмеричной системе. Затем,
следуя заданию, необходимо перевести
числа в в шестнадцатеричную
систему счисления. В шестнадцатеричной
системе счисления числа необходимо сложить
и вычесть. Затем результаты этих действий
перевести обратно в восьмеричную систему
счисления, и вывести в файл.
3.
Правила перевода для
разных систем счисления.
Система
счисления —
это способ представления чисел посредством
алфавита (конечное множество) символов,
называемых цифрами.
Например, «обычная» десятичная система счисления имеет алфавит {0;1;...;9}, состоящий из десяти цифр: 0; 1 и т.д. Системы счисления бывают двух видов: позиционные и непозиционные.
Позиционная система счисления — это такая, в которой одна и та же цифра имеет разные значения в зависимости от ее позиции в числе. Например, десятичная система счисления — позиционная. В десятичном числе 22 первая слева цифра 2 имеет значение 20, а вторая — значение 2.
Непозиционная
система счисления — это такая, в
которой одна и та же цифра всегда имеет
одинаковое значение, не зависящее от
ее позиции в числе. Например, римская
система счисления — непозиционная. В
римском числе XX обе цифры X имеют значение
10.
3.1.
Правило перевода из
шестнадцатеричной
в восьмеричную систему
счисления.
Оптимальный
способ перевода числа из шестнадцатеричной
в восьмеричную систему счисления будет
следующим. Т.к. шестнадцатеричное число
имеет основание системы счисления 16=24,
а восьмеричное 8=23, то шестнадцатеричное
число переводим в двоичное: каждую цифру
заменяем на группу из 4-х двоичных цифр
( тетраду ) соответственно данной таблице:
С и с т е м а с ч и с л е н и я |
С и с т е м а с ч и с л е н и я | |||
2 | 16 | 2 | 16 | |
0000 | 0 | 1000 | 8 | |
0001 | 1 | 1001 | 9 | |
0010 | 2 | 1010 | A | |
0011 | 3 | 1011 | B | |
0100 | 4 | 1100 | C | |
0101 | 5 | 1101 | D | |
0110 | 6 | 1110 | E | |
0111 | 7 | 1111 | F | |
Таблица №1 |
Затем получившееся двоичное число разбиваем на группы по 3 цифры (триады). Далее заменяем эти триады цифры соответствующими восьмеричными цифрами. При необходимости добавить нули слева от числа для дробной части, и справа для целой части числа.
С и с т е м а с ч и с л е н и я |
С и с т е м а с ч и с л е н и я | |||
2 | 8 | 2 | 8 | |
000 | 0 | 100 | 4 | |
001 | 1 | 101 | 5 | |
010 | 2 | 110 | 6 | |
011 | 3 | 111 | 7 | |
Таблица №2 |
Например:
3.2.
Правило перевода из
восьмеричной в шестнадцатеричную
систему счисления.
Данный перевод осуществляется аналогично описанному в п. 3.1. с тем отличием, что восьмеричное число переводится в двоичное: каждая восьмеричная цифра заменяется двоичной триадой согласно таблице №2.
Затем двоичное число разбивается на тетрады (при необходимости добавить нули справа и слева от числа) которые заменяются шестнадцатеричными цифрами согласно таблице №1. Например:
4.
Укрупненная блок-схема.
5. Текст программы.
uses crt;
Type
t1=array[0..100] of real;
t2=array[0..20] of string;
{процедура для записи в
Procedure p8(var dt8:t1;var lc,c:integer;var isx:string);
var
b,code,i,a:integer;
begin
a:=length(isx);
b:=Pos('.', iSx);
if b=0 then b:=Pos(',', iSx);
lc:=b-1;
for i:=1 to b-1 do
begin
Val(isx[i],dt8[i],code);
end;
for i:=b+1 to a do
begin
Val(isx[i],dt8[i-1],code);
end;
c:=a-1;
end;
{Проседура для перевода из 8-ричной системы в 16-тиричную}
Procedure p8v16(var dt8,dt16:t1;var c,obch,dr:integer);
var
dt8p,b:t1;
i,k,d:longint;
a:real;
begin
c:=c-dr+obch;
for k:=1 to c do
begin
dt8p[k]:=dt8[c-k+1];
b[k]:=round(exp((k-1)*ln(8)))*
end;
a:=0;
for k:=1 to c do
begin
a:=a+b[k];
end;
d:=1;
repeat
dt16[d]:=round((a-16*int(a/16)
a:=int(a/16);d:=d+1;