Системы счисления и коды
Курсовая работа, 18 Ноября 2010, автор: пользователь скрыл имя
Описание работы
В вычислительной технике на ряду с десятичной системой исчисления используется восьмеричная и шестнадцатеричная. Ручной перевод хотя и достаточно прост но требует много времени. Для решения данного задания необходимо составить программу, которая переводит числа из разных систем счисления в другие системы счисления.
Содержание
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 файл
КУРСОВАЯ.DOC
— 1.34 Мб (Скачать)ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ
Рязанская
государственная радиотехническая
академия
Кафедра
САПР ВС
Пояснительная
записка к курсовому проекту по дисциплине
«Информатика»
тема:
«Системы счисления
и коды»
Разработал ст. гр. 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;