Grejov kod
Prikazujem rezultate 1 do 7 od 7

Tema: Grejov kod

  1. #1
    Početnik
    Učlanjen
    31.01.2010.
    Pol
    muški
    Lokacija
    Gradiška,RS
    Poruke
    46
    Reputaciona moć
    0

    Podrazumevano Grejov kod

    Pozdrav ljudi,može li mi ko objasniti kako se konvertuje dekadni broj u Grejov kod?



  2. #2
    Poznat
    Učlanjen
    08.04.2009.
    Pol
    muški
    Poruke
    9.681
    Reputaciona moć
    132

    Podrazumevano Re: Grejov kod

    Citat Original postavio StefanGradiska Pogledaj poruku
    Pozdrav ljudi,može li mi ko objasniti kako se konvertuje dekadni broj u Grejov kod?
    Prvo konvertuj u BCD, a onda BCD u Grejov kod.
    Ako ne znaš kako da uradiš neku od ovih konverzija, pitaj, pa ću ti objasniti.
    Ukoliko ti treba samo konvertor:
    Kod:
    /////////////////////////////////////////////////////////////
    ////     Coverting a decimal number to Gray code       /////
    ///////////////////////////////////////////////////////////
    
    
    
    # include<stdio.h>
    # include<conio.h>
    # include<stdlib.h>
    static int a[8],b[8],k=1,i;
    void main()
    {   int n1;
    	 clrscr();
    	 printf("Enter any Numbers :");
    	 scanf("%d",&n1);
    	 while(n1!=0)   /* converting number to its binary equivalent */
    	 {  a[i]=n1 % 2;
    		 n1/=2;
    		 i++;
    	 }
    	/* printing binary equivalent */
    		 printf("\nThe binary code of the given number is :");
    	 for(i=7;i>=0;i--)
    	 printf("%d",a[i]);
    
    
    	 /* gray code conversion */
    	 b[0]=a[7];
    
    	 for(i=7;i>=0;i--)
    	 {  if(a[i]==0 && a[i-1]==0)
    		 b[k]=0;
    		 if(a[i]==1 && a[i-1]==1)
    		 b[k]=0;
    		 if(a[i]==0 && a[i-1]==1)
    		 b[k]=1;
    		 if(a[i]==1 && a[i-1]==0)
    		 b[k]=1;
    		 k++;
    	 }
    
    	 /* printing the gray code */
    	 printf("\nThe gray code of the given number is :");
    	 for(i=0;i<8;i++)
    	 printf("%d",b[i]);
    }
    Kod nije moj, a nemam ovde Visual Studio da ga testiram. Ukoliko ne radi, javi, pa ću pogledati večeras.
    Poslednji put ažurirao/la Caliburn : 21.04.2010. u 14:43
    http://sites.google.com/site/zvezdaraforest

  3. #3
    Početnik
    Učlanjen
    31.01.2010.
    Pol
    muški
    Lokacija
    Gradiška,RS
    Poruke
    46
    Reputaciona moć
    0

    Podrazumevano Re: Grejov kod

    Znam naravno da pretvorim dekadni u binarni,ali ne znam iz binarnog u Grejov kod.

    Ako možeš samo to da objasniš.

  4. #4
    Početnik
    Učlanjen
    31.01.2010.
    Pol
    muški
    Lokacija
    Gradiška,RS
    Poruke
    46
    Reputaciona moć
    0

    Podrazumevano Re: Grejov kod

    E ipak ne treba.

    Našao sam na netu,na sajtu jednog fakulteta ima nešto malo o sistemima,pa sam vidio kako se to radi.

    Evo mog koda za Pascal,taman mi trebalo za jedan zadatak.

    Kod:
    program koder;
     var
     t,grej,bin:string;
    zb,l,g,br,i,j,n,k,x,x1:longint;
     a:longint;
      begin
       writeln ('Prirodan broj koji treba konvertovati?');
       readln (n);
       writeln ('Koliko bitova?');
       readln (k);
        repeat
        if n>=2 then br:=n mod 2      {konverzija dekadnog u binarni}
        else br:=n;
        n:=n div 2;
        str(br,t);
          bin:=t+bin;                {ide t+bin,jer se rezultat zapisuje od dole,naprema gore}
         until n=0;
     l:=length(bin);
      for i:=1 to l do
       begin
        if i>1 then
         begin
        val(bin[i],x,a);               {konverzija stringa u broj}
        val(bin[i-1],x1,a);
        zb:=x+x1;
        if zb=1 then t:='1'               {granicni slucajevi}
        else
        if zb=0 then t:='0'
        else
        if zb=2 then t:='0';
        grej:=grej+t;
        end;
        if i=1 then grej:=grej+bin[i];
         end;
      l:=length(grej);                            {dodavanje nula,odnosno bitova ako nema dovoljno}
      if l<k then
       begin
        repeat
        grej:='0'+grej;
        l:=length(grej);
        until l=k;
        end;
        writeln (grej);
        readln;
      end.
    Poslednji put ažurirao/la StefanGradiska : 21.04.2010. u 17:17

  5. #5
    Poznat
    Učlanjen
    08.04.2009.
    Pol
    muški
    Poruke
    9.681
    Reputaciona moć
    132

    Podrazumevano Re: Grejov kod

    Citat Original postavio StefanGradiska Pogledaj poruku
    Znam naravno da pretvorim dekadni u binarni,ali ne znam iz binarnog u Grejov kod.

    Ako možeš samo to da objasniš.
    Citat Original postavio StefanGradiska Pogledaj poruku
    E ipak ne treba.
    Ovo znači da si saznao kako se pretvara broj iz binarnog u Grejov kod?
    http://sites.google.com/site/zvezdaraforest

  6. #6
    Početnik
    Učlanjen
    31.01.2010.
    Pol
    muški
    Lokacija
    Gradiška,RS
    Poruke
    46
    Reputaciona moć
    0

    Podrazumevano Re: Grejov kod

    Pa naravno,vidiš da sam gore kod napisao.


    Uglavnom,ako nekoga zanima.Evo ja ću da objasnim.


    Npr,imamo broj 19(dekadni),i treba ga pretvoriti u Grejev kod sa 5 bita.

    19 MOD 2 =1
    9 MOD 2 =1
    4 MOD 2 = 0
    2 MOD 2 = 0
    1 MOD 2 = 1

    Sad to pročitate od dole prema gore,i dobije se ovo:

    10011

    E sad kako pretvoriti binarni u Grejev?Lako...
    Spustite prvu cifru(radite s lijeva,prema desno).
    I počinjete da sabirate cifru koja se nalazi za jedno mjesto u desno,sa onom što se nalazi lijevo:

    1 (spuštena)
    0(dakle 0 desno od prve cifre)+1(lijevo cifra,u ovom slučaju to je prva cifra)=1
    0(cifra desno od prethodne nule)+0(prethodna nula)=0
    1(cifra desno od prethodne cifre)+0(prethodna cifra)=1
    1(cifra desno od prethodne cifre)+1(prethodna cifra)=0
    Kod:
    Dakle 1+1=0!
          0+0=0!
          1+0=1!
    E sad,pročitate ovo iznad ovog objašnjenja,od goreprema dole.

    Dobijete:

    11010(Grej)

  7. #7
    Elita
    Učlanjen
    15.05.2009.
    Pol
    muški
    Poruke
    16.671
    Reputaciona moć
    205

    Podrazumevano Re: Grejov kod

    Posto je problem resen zatvaramo temicu

Pravila za slanje poruka

  • Ne možete kreirati novu temu
  • Ne možete poslati odgovor
  • Ne možete dodati priloge
  • Ne možete prepraviti svoju poruku
  •