Funkcja mantysa cecha

0

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;

    }
0

charAt zwróci ci chara, czyli ZNAK ascii! char o numerze 0 to nie jest to samo co znak '0'. Znak '0' to jest znak numer 48 i taką też wartość uzyskasz jak zrzutujesz ten znak do liczby. A ty sobie tu wszędzie zakładasz że charAt(i) zwróci ci 0 albo 1 kiedy w rzeczywistości zwraca 48 albo 49 ;]

1 użytkowników online, w tym zalogowanych: 0, gości: 1