Dziesiętne na binarne - króciutki kod.

Dziesiętne na binarne - króciutki kod.

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

P0
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
0

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

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

Z góry wielkie dzięki.

HA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 115
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.

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
1
Kopiuj
cout << std::bitset<32>(value);

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.