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);
}
}
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);
}
}