Wątek przeniesiony 2017-11-21 21:38 z C/C++ przez ŁF.

Dziesiętne na binarne - króciutki kod.

0

Panowie, wielka prośba.
Czy mógłby ktoś wytłumaczyć jak laikowi ten kod :

int value;
..
for(int i = sizeof(value); i >= 0; --i)
cout << (value >> i & 1);

Z góry wielkie dzięki.

0

sizeof(value) - zwraca wielkość zmiennej w bajtach, w przypadku int zwraca 4 bajty, więc pętla przebiega od 4 do 0.
W każdym przebiegu wyświetla value przesuniętą o i bitów w prawo a & 1 dokonuje logicznego AND z 1, czego wynikiem jest wartość najmniej znaczącego bitu (0 lub 1), po operacji przesunięcia.

Jest tu w zasadzie jeden błąd, gdyż nie wyświetlasz każdego bitu po kolei a wyświetlasz tylko 5 (od 4 do 0) najmniej znaczących (zamiast 32 w przypadku inta).
Aby to naprawić wystarczy ze zmienisz w pętli ilość bajtów na ilość bitów (mnożąc przez 8) w początkowej wartości zmiennej i.

1
cout << std::bitset<32>(value);

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