Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Metod pakovanje podataka

[es] :: Java :: Metod pakovanje podataka

[ Pregleda: 1547 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

profa.smc

Član broj: 176900
Poruke: 7
*.dynamic.isp.telekom.rs.



Profil

icon Metod pakovanje podataka23.04.2014. u 14:24 - pre 102 meseci
U pitanju je primer iz knjige, mada se u toj knjizi nigde ne pominju ovakve metode.
Zanima me objasnjenje metoda:
- pomeranje ulevo bitova
- pakovanje podataka
- raspakivanje podataka

Sta znaci pakovanje kada se koristi << i raspakivanje sa >>> ?
I kod raspakivanja ovo 0x0000000f?

Evo zadatka, hvala unapred!
Code:

import java.util.*;

public class Tren {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        
        int pakovanoVreme; //pakovani podaci vremenskog trenutka
        int godina, mesec, dan, sat, minut;
        
        //ulaz sa tastature
        Scanner tastatura = new Scanner(System.in);
        
        //ucitavanje podataka vremenskog trenutka
        System.out.print("Unesite dan, mesec, godinu: ");
        dan = tastatura.nextInt();
        mesec = tastatura.nextInt();
        godina = tastatura.nextInt();
        
        System.out.print("Unesite sat, minut: ");
        sat = tastatura.nextInt();
        minut = tastatura.nextInt();
        
        //Pomeranje ulevo bitova vremenskih podataka
        godina = godina << 20;
        mesec = mesec << 16;
        dan = dan << 11;
        sat = sat << 6;
        
        //pakovanje podataka vremenskog trenutka
        pakovanoVreme = godina | mesec | dan | sat | minut;
        
        //prikazivanje pakovanog sadrzaja na ekranu
        System.out.println("Pakovano vreme: " + pakovanoVreme);
        
        //raspakivanje podataka vremenskog trenutka
        godina = pakovanoVreme >>> 20;
        mesec = (pakovanoVreme >>> 16) & 0x0000000f;
        dan = (pakovanoVreme >>> 11) & 0x0000001f;
        sat = (pakovanoVreme >>> 6) & 0x0000001f;
        minut = pakovanoVreme & 0x0000003f;
        
        //prikazivanje raspakovanog sadrzaja na ekranu
        System.out.print("Raspakovano vreme: ");
        System.out.print(dan + " . " + mesec + " . " + godina);
        System.out.println(" " + sat + ":" + minut);
        
        
        
    }
    
}

 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1342
*.dynamic.sbb.rs.



+310 Profil

icon Re: Metod pakovanje podataka23.04.2014. u 14:45 - pre 102 meseci
Da bi razumeo o čemu se ovde radi potrebno ti je predznanje u vezi
binarnog kodiranja i binarnog sistema brojeva koje je ipak preširoko
da bi se ovde makar i u kratkim crtama opisalo.

http://en.wikipedia.org/wiki/Binary_number

Inače, u samom primeru se radi o "pakovanju" i "raspakivanju" informacija
putem binarnog sistema i korištenjem binarnih operatora kao što su <<, >>, >>>, |, &, ...
 
Odgovor na temu

[es] :: Java :: Metod pakovanje podataka

[ Pregleda: 1547 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.