Konwersja dec na bin c++ za pomoca pol bitowych,unii,struktur

0

Mam napisac program to przeliczania liczb z sys 10 na 2 za pomoca struktur, pol bitowych i unii i nie mam pojecia jak sie do tego zabrac . Potrzebowalbym jakis wskazowek bo nigdy nie uzywalem struktur ani unii ani pol (sama konwersje potrafie zrobic )

0

Chyba chodzi o to, że masz to opakować w strukturę/unię, a pole bitowe np. do przechowywania tymczasowego przy konwersji. Sam nie wiem :/

0

http://pl.wikipedia.org/wiki/Pole_bitowe

plus funkcja w takim rodzaju:

void printBinary(const unsigned char val)
{
    for(int i=7;i>=0;i--){
        if(val &(1<<i))
            std::cout<<"1";
        else
            std::cout<<"0";
    }
}

Tylko nie wiem, po co Ci ta Unia.. Znaczy na siłę można ją gdzieś upchać, ale nie wiem po co..

0

Jedyne co przychodzi mi do głowy to takie wykorzystanie struktur o których wspomniałeś:


struct sekator
{
    int  b0 : 1;
    int  b1 : 1;
    int  b2 : 1;
 ...
}

union konwerter
{
      sekator     s_dane;
      int           i_dane;
};

W ten sposób możesz wczytać zmienną do i_dane a odczytać ją sobie bit po bicie z s_dane. Tyle że takie zabawy są bardziej wykorzystywane przy programowaniu niskopoziomowym a nie C++. Dodatkowo musisz bit po bicie wyświetlać łopatologicznie bez fora bo tam w środku nie masz żadnej tablicy a i wskaźnika do pola bitowego też nie zrobisz. Czyli generalnie sposób gorszy niż przedstawiony przez kolegę powyżej ale spełnia część założeń przedstawionych przez ciebie. Lepiej można kombinować gdybyśmy poznali całą treść zadania a nie mniej więcej.

0

Treści jako takiej NIE MA bo gościu na wykladzie nam kazal napisac taki program ktory przelicza na binarny i mamy wykorzystac te struktury itd. Ale sam jeszcze troche pokombinuje z tym co mi podpowiedzilscie

0

a w polu bitowym musze zapisac cos takiego

  struct poleliczby
{      char zero:0;
      char jeden:1;

      };

tylko mam pytanie jak ma wygladac struktura ?
0

To pole bitowe raczej sensu nie ma.

0

Chyba, że stworzyłby takich 8 i liczby wprowadzal tylko z zakresu 0-255 ;]

struct poleliczby
{
     char zero:0;
     char jeden:1; 
};

mylisz przydzielanie bitów z przypisaniem, na zero jak i na jeden potrzebujesz 1-bit, czyli struktura w tym przypadku, choć jak napisał lukasz1235 nie ma sensu dla tego przykładu, to powinna jednak wyglądać tak:

struct poleliczby
{
     char zero : 1; // przydzielamy 1 bit - czyli możemy w nim zapisać liczby od 0-1
     char jeden : 1; // też przydzielamy 1 bit
     char cztery : 2; // przydzielamy 2 bity - czyli możemy w tej zmiennej przechować liczby 0, 1, 2, 3
};

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