Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Reprezentacja float

Ostatnio zmodyfikowano 2015-12-02 20:11
Autor Wiadomość
patox
Temat założony przez niniejszego użytkownika
Reprezentacja float
» 2015-12-02 16:18:55
Witam
Link do zadania: http://pl.spoj.com/problems/PP0504D/
C/C++
#include <iostream>

using namespace std;

int main()
{
    int t;
    float n;
    cin >> t;
    for( int i = 0; i < t; i++ )
    {
        cin >> n;
        for( int j = sizeof n - 1; j >= 0; j-- )
        {
            cout << hex <<(((( unsigned char * ) & n )[ j ] ) + 48 ) - 48 << endl;
        }
    }
}
Czy ktoś mógłby mi wytłumaczyć tą linijkę i nakierować tak, abym mógł ją zrozumieć? Jedyne co z niej wiem to to, że cout << hex konwertuje na szesnastkowy, a w środku jest konwersja z float do char, skopiowałem tą konwersję po wielu próbach napisania czegoś takiego własnoręcznie, próbowałem wskaźnikiem odwołać się do danego bitu, ale za każdym razem bezskutecznie, albo wyświetlał się ciągle ten sam znak, albo też wychodziły dziwne znaczki (nie wiem, czy takie same, czy inne) co naprawiłem dopiero kopiując gotową konwersję, ale początkowo wyświetlało mi też jakieś dziwne znaczki, naprawiło się dopiero po dodaniu i odjęciu zmiennej (wpisałem 48, bo początkowo chciałem sprawdzić, czy kody ascii nie przyjmują liter i dostałem liczby, po obliczeniu ich w systemie szesnastkowym wyszła odpowiedź, więc pomyślałem, że znów to po prostu odejmę i wtedy wynik wyświetlał się prawidłowy).
C/C++
cout << hex <<(((( unsigned char * ) & n )[ j ] ) + 48 ) - 48 << endl;
P-141301
Anim
» 2015-12-02 16:30:05
w tym zadaniu dużo łatwiej skorzystac z funkcji printf("%x")...

bo z tego co kojarzę to robi to samo co konwersja dla couta, której użyłeś (chociaż może się mylę, jeśli tak, to wybacz)
P-141302
patox
Temat założony przez niniejszego użytkownika
» 2015-12-02 20:10:11
tylko to nie wyjaśnia, dlaczego muszę do konwersji dodawać i odejmować zmienną przy konwersji couta
P-141326
pekfos
» 2015-12-02 20:11:18
tylko to nie wyjaśnia, dlaczego muszę do konwersji dodawać i odejmować zmienną przy konwersji couta
Nie musisz. Wystarczy wynik rzutować na int.
P-141327
« 1 »
  Strona 1 z 1