Cześć wszystkim, mam takie zadanie do wykonania:
Napisać funkcję:
float liczbaF( String łańcuch ) przekształcającą łańcuch binarny reprezentujący wewnętrzną postać wartości typu float na liczbę, działając według następującego algorytmu:
1.Wylicz znak liczby: bit 0: 0->dodatnia, 1->ujemna
2.Wylicz cechę (bity 1-8) i odejmij 127
3.Wylicz mantysę (bity 9-31) jako ułamek i dodaj 1
4.Wylicz wartość liczby jako: ±mantysa∙2cecha
Zastosować metody:
charAt( nrZnaku ) klasy String (nie stosować metody substring())
parseInt( łańcuch, podstLiczenia) klasy Integer
pow( liczba, wykładnik) klasy Math
kod który napisałem (kompletnie nie wiem jak się za to zabrać) nie działa.. jakieś pomysły?
float liczbaF(String łańcuch){
int znakLiczby = 0;
if(łańcuch.charAt(0) == 0){
znakLiczby = 1;
}else{
znakLiczby = -1;
}
System.out.println(znakLiczby);
char calosc = 'x';
for(int i = 1; i < 9; i++){
calosc += łańcuch.charAt(i);
}
String cecha = Character.toString(calosc);
int cechaDoLiczenia = Integer.parseInt(cecha, 2);
cechaDoLiczenia -= 127;
double x = -1;
char tymczasowy = 'x';
for(int i = 9; i < 32; i++){
tymczasowy += łańcuch.charAt(i);
}
String mantysa = Character.toString(tymczasowy);
int mantysaDoLiczenia = Integer.parseInt(mantysa, 2);
double mantysaKoncowa = Math.pow(mantysaDoLiczenia, x);
mantysaKoncowa++;
double koniec = (znakLiczby*mantysaKoncowa*Math.pow(2, cechaDoLiczenia));
return (float)koniec;
}