Prosty, ale niejasny fragment kodu (dziesiętne na binarne)
Ostatnio zmodyfikowano 2017-11-21 06:07
Pumas01 Temat założony przez niniejszego użytkownika |
Prosty, ale niejasny fragment kodu (dziesiętne na binarne) » 2017-11-20 23:46:06 Bardzo proszę o wytłumaczenie jak laikowi tego króciutkiego fragmentu kodu:
int liczba; .. for(int i = sizeof(liczba); i >= 0; --i) cout << (liczba >> i & 1);
Z góry wielkie dzięki. |
|
pekfos |
» 2017-11-20 23:53:26 Nvm. |
|
mateczek |
» 2017-11-21 06:07:12 sizeof(liczba) jest bez sensu (zwraca rozmiar w bajtach) tobie jest potrzebny długość liczby binarnej log2(b1000)=3 daje Ci długość liczby binarnej(dokładnie długość -1). jeśli jedynkę "b0001" przesuniesz o 3 pozycje w lewo to otrzymasz "b1000" #include <iostream> #include<cmath> using namespace std;
int main() { int liczba = 256; string binLiczba; int binSize = log2( liczba ); maska = 1 << binSize; for( int i = 0; maska; i++ ) { if( liczba & maska ) cout << '1'; else cout << '0'; maska >>= 1; } cout << binLiczba << " "; }
#include <iostream> #include<cmath> using namespace std;
int main() { int liczba = 256; string binLiczba; int binSize = log2( liczba ); for( int i = binSize; i >= 0; --i ) { binLiczba +=( liczba >> i & 1 ) + '0'; } cout << binLiczba << endl; }
|
|
« 1 » |