Salve a tutti! sono nuovo del forum e purtroppo per me anche di.. java!!
Ho bisogno di un codice che preso un intero (32bit) mi dia in uscita due short che rappresentino rispettivamente il valore decimale dei primi e dei secondi 16 bit.
Ho provato a scrivere qualcosa con l'aiuto di codici trovati qui.. il problema è che quello che ho ottenuto sono 2 double che rappresentano il valore decimale degli short voluti.. ma sono cmq double!
Posto di seguito quello che ho fatto..(opera su due int restituendo 4 valori).. vi ringrazio in anticipo.. Help me!
//Prende in ingresso due numeri interi, li converte in binario, divide i 32 bit dell'int in 2 gruppi da 16 bit (Short)
//e riporta il valore decimale di ciascuno dei 2 Short.
public class conversione_Int_Short_2numeri {
public static void main(String[] args) {
int i =0; //primo intero da convertire
int e =1; //secondo intero da convertire
int[] decimale1 = new int[32];
int[] decimale2 = new int[32];
for(int k=0; k< 32; k++){
decimale1[31-k]=i%2;
i=i/2;
}
for(int k=0; k< 32; k++){
decimale2[31-k]=e%2;
e=e/2;
}
System.out.println("Primo Short1 in binario:");//primi sedici bit del primo int
for(int k=0; k<16; k++){
System.out.println(decimale1[k]);
}
System.out.println("Secondo Short1 in binario:");//secondi 16 bit del primo int
for(int k=16; k<32; k++){
System.out.println(decimale1[k]);
}
System.out.println("Primo Short2 in binario:");//primi sedici bit del secondo int
for(int k=0; k<16; k++){
System.out.println(decimale2[k]);
}
System.out.println("Secondo Short2 in binario:");//secondi 16 bit del secondo int
for(int k=16; k<32; k++){
System.out.println(decimale2[k]);
}
//Mi definisco due variabili che rappresentano i due numeri e un contatore
double num1 = 0;
double num2 = 0;
double cont = 0;
//Ciclo sui primi 16 bit (Short1) e applico l'algoritmo
for(int k=15; k>=0; k--){
num1 = num1 + (decimale1[k]*Math.pow(2, cont));
cont++;
}
//Azzero il contatore, ciclo sui secondi 16 bit (Short1) e applico l'algoritmo
cont = 0;
for(int k=31; k>=16; k--){
num2 = num2 + (decimale1[k]*Math.pow(2, cont));
cont++;
}
//Mi definisco altre due variabili che rappresentano i due numeri e un contatore
double num3 = 0;
double num4 = 0;
double cont2 = 0;
//Ciclo sui primi 16 bit (Short2) e applico l'algoritmo
for(int k=15; k>=0; k--){
num3 = num3 + (decimale2[k]*Math.pow(2, cont2));
cont2++;
}
//Azzero il contatore, ciclo sui secondi 16 bit (Short2) e applico l'algoritmo
cont2 = 0;
for(int k=31; k>=16; k--){
num4 = num4 + (decimale2[k]*Math.pow(2, cont2));
cont2++;
}
System.out.println("Valore decimale primo Short: "+num1);
System.out.println("Valore decimale secondo Short: "+num2);
System.out.println("Valore decimale primo Short: "+num3);
System.out.println("Valore decimale secondo Short: "+num4);
}
}

Rispondi quotando
