Системы счисления и коды

Автор: Пользователь скрыл имя, 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

Работа содержит 1 файл

КУРСОВАЯ.DOC

— 1.34 Мб (Скачать)

                until a<16;

                dt16[d]:=a;

                end;

               {Процедура для перевода из 16-тиричную  в 8-миричную}

     Procedure p16v8(var dt16,dt8:t1;var c:integer);

               var

                b:t1;

                i,k,d:longint;

                a:real;

               begin

                for k:=1 to c do

                      begin

                b[k]:=round(exp((k-1)*ln(16)))*dt16[k];

               end;

                a:=0;

                for k:=1 to c do

                      begin

                  a:=a+b[k];

                 end;

                d:=1;

                repeat

                 dt8[d]:=round((a-8*int(a/8)));

                 a:=int(a/8);d:=d+1;

                until a<8;

                dt8[d]:=a;

               end;

               {Процедура для записи 16-тиричной(числовой) в 16-тиричную(буквенную)}

     Procedure p16v16n(var dt16:t1;var dt16n:t2;var c:integer);

               var

                i:integer;

               begin

                for i:=1 to c do

                      begin

                 if dt16[i]=0 then dt16n[i]:='0';

                 if dt16[i]=1 then dt16n[i]:='1';

                 if dt16[i]=2 then dt16n[i]:='2';

                 if dt16[i]=3 then dt16n[i]:='3';

                 if dt16[i]=4 then dt16n[i]:='4';

                 if dt16[i]=5 then dt16n[i]:='5';

                 if dt16[i]=6 then dt16n[i]:='6';

                  if dt16[i]=7 then dt16n[i]:='7';

                  if dt16[i]=8 then dt16n[i]:='8';

                  if dt16[i]=9 then dt16n[i]:='9';

                  if dt16[i]=10 then dt16n[i]:='A';

                 if dt16[i]=11 then dt16n[i]:='B';

                  if dt16[i]=12 then dt16n[i]:='C';

                  if dt16[i]=13 then dt16n[i]:='D';

                  if dt16[i]=14 then dt16n[i]:='E';

                 if dt16[i]=15 then dt16n[i]:='F';

                end;

               end;

               {Процедура сумирования в 16-тиричной  ситеме счисления}

     Procedure psum(var dt16ch1,dt16ch2,sum:t1;var dlina:integer);

               var

                i:integer;

               begin

                for i:=1 to dlina do

                       begin

                  sum[i]:=dt16ch1[i]+dt16ch2[i];

                       end;

               for i:=1 to dlina do

                     begin

                 if (sum[i]>15.1)  then

                 begin

                         sum[i+1]:=sum[i+1]+1;

                  sum[i]:=sum[i]-16;

                 end;

                end;

               end;

               {Процедура вычитания в 16-тиричной  ситеме счисления}

     Procedure praz(var dt16ch1,dt16ch2,raz:t1;var c:integer);

               var

                i,p:integer;

               begin

                p:=0;

                for i:=1 to c do

                       begin

                  if (dt16ch1[i]-dt16ch2[i]-p)<0  then

                   begin

                    raz[i]:=dt16ch1[i]-dt16ch2[i]+16-p;

                           p:=1;

                         end;

                  if (dt16ch1[i]-dt16ch2[i]-p)>=0 then

                         begin

                          raz[i]:=dt16ch1[i]-dt16ch2[i]-p;

                    p:=0;

                 end;

                 end;

               end;

     {-------------------------------------------------------------------}

     var

      toch2,dlina2,toch1,dlina1,dr1,dr2,dlina,obch1,obch2,obch:integer;

      i:longint;

      dt8ch1,dt8ch2,dt16ch1,dt16pch1,dt16ch2,dt16pch2,sum,raz,raz8,sum8:t1;

      dt16nch1,dt16nch2,sumn,razn, n1:t2;

      isx1,isx2:string;

      f,g:text;

      vb: integer; 

     {Начало  программы} 

     begin

      TextColor(Yellow);

      TextBackGround(Blue);

      clrscr;

      assign (f,'c:\data.txt');

      reset(f);

      readln(f,isx1);

      readln(f,isx2);

      WriteLn('First  number = ', isx1);

      WriteLn('Second number = ', isx2);

      p8(dt8ch1,toch1,dlina1,isx1);

      p8(dt8ch2,toch2,dlina2,isx2);

      obch1:=dlina1-toch1;

      obch2:=dlina2-toch2;

      if obch1>=obch2 then obch:=obch1 else obch:=obch2;

      if dlina1>dlina2 then dlina:=dlina1 else dlina:=dlina2;

      p8v16(dt8ch1,dt16ch1,dlina1,obch,obch1);

      p8v16(dt8ch2,dt16ch2,dlina2,obch,obch2);

      psum(dt16ch1,dt16ch2,sum,dlina);

      p16v16n(sum,sumn,dlina);

      praz(dt16ch1,dt16ch2,raz,dlina);

      p16v16n(raz,razn,dlina);

      p16v8(dt16ch1,dt8ch1,dlina1);

      p16v16n(dt16ch1,dt16nch1,dlina1);

      p16v8(dt16ch2,dt8ch2,dlina2);

      p16v16n(dt16ch2,dt16nch2,dlina2);

      writeln;

      p16v8(raz,raz8,dlina);

      assign (g,'c:\results.txt');

      rewrite(g);

      write('PA3HOCTb = ');

      for i:=dlina downto obch+1 do write(raz8[i]:0:0);

      write('.');

      for i:=obch downto 1 do write(raz8[i]:0:0);

      write(g,'PA3HOCTb =');

      for i:=dlina downto obch+1 do write(g,raz8[i]:0:0);

       write(g,'.');

      for i:=obch downto 1 do write(g,raz8[i]:0:0);

      writeln(g);

      WriteLn;

      write('Cymma = ');

      p16v8(sum,sum8,dlina);

      for i:=dlina+1 downto obch+1 do write(sum8[i]:0:0);

       write('.');

      for i:=obch downto 1 do write(sum8[i]:0:0);

      write(g,'Cymma =');

      p16v8(sum,sum8,dlina);

      for i:=dlina+1 downto obch+1 do write(g,sum8[i]:0:0);

       write(g,'.');

      for i:=obch downto 1 do write(g,sum8[i]:0:0);

      close(f);

      Close(g);

      ReadKey;

      end.

     {Конец  программы} 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

     6. Ручной просчет  контрольного примера. 

     Пусть имеется два восьмеричных числа:

     1-ое:

     2-ое:  

           Переведем их в шестнадцатеричную систему счисления: 

      =100001,111101=

       =11100,100010=  
 
 

      Сложим  и вычтем эти числа: 

                       
 
 

      Переведем числа в восьмеричную систему счисления : 

      =111101,1011111=

      =101,11011=  
 
 

     7. Машинный просчет контрольного примера. 

     Файл c:\data.txt содержит следующее:  

     41.75

     34.42 

     После выполнения программы файл c:\results.txt содержит следующее: 

     Сумма = 076.37

     Разность = 05.33 
 
 
 
 
 
 
 

         8. Заключение. 

         Курсовая  работа по теме « системы счисления » помогает освоить и отработать методы перевода чисел из разных систем счисления, дает понятие о всевозможных системах счисления, правила выполнения арифметических действий в этих системах.

         Курсовая  работа выполнена на языке высокого уровня – Turbo Pascal, что способствует лучшему освоению данного языка программирования, изучению многих тонкостей языка, связанных с решением задачи, поставленной в данной курсовой работе. 

         Результатом выполнения данной курсовой работы будет  являться программа, выполняющая перевод  вещественных чисел из восьмеричной системы счисления в шестнадцатеричную и обратно в восьмеричную систему счисления. В шестнадцатеричной системе счисления выполняются арифметические действия действия. Результат работы программы записывается в файл. 
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

      10. Используемая литература. 

    1) И. А. Цветков «Представление и обработка информации в ЭВМ», уч.-изд. РГРТА 2003 год.

Информация о работе Системы счисления и коды