Nie bardzo wiedziałem jak to zrobić ale znalazłem program, który to realizuje, oto on:
Kod: Zaznacz cały
#include <iostream>
using namespace std;
void binarnie(long int liczba, int poczatek, int ile_bitow)
{
for (; ile_bitow > 0; poczatek--, ile_bitow--)
if ((liczba >> poczatek) & 1)
cout << "1";
else
cout << "0";
}
int main()
{
union
{
float a;
long int b;
};
cout << "Podaj liczbe zmiennoprzecinkowa: ";
cin >> a;
cout << "Mantysa = ";
binarnie(b, 22, 23);
cout << endl << "Wykladnik = ";
binarnie(b, 30, 8);
cout << endl << "Znak = ";
binarnie(b, 31, 1);
cout << endl;
return 0;
}
Do czego jest tu ta unia (union).
I jeszcze jedno: co robi operacja bitowa & w takim wyrażeniu:
Kod: Zaznacz cały
liczba & 1
czy ta operacja wygląda tak:
Kod: Zaznacz cały
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ( <-- to jest 'liczba' )
& 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
Kod: Zaznacz cały
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ( <-- to jest 'liczba' )
& 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 ( IEEE-754 )