Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Prosty, ale niejasny fragment kodu (dziesiętne na binarne)

Ostatnio zmodyfikowano 2017-11-21 06:07
Autor Wiadomość
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.
P-167041
pekfos
» 2017-11-20 23:53:26
Nvm.
P-167042
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"

C/C++
#include <iostream>
#include<cmath>
using namespace std;

int main() {
    int liczba = 256;
    string binLiczba;
    int binSize = log2( liczba ); //długość liczby binarnej
    maska = 1 << binSize; //ostatni bit liczby  
    for( int i = 0; maska; i++ ) {
        if( liczba & maska ) cout << '1';
        else cout << '0';
       
        maska >>= 1;
    }
    cout << binLiczba << " ";
   
}


C/C++
#include <iostream>
#include<cmath>
using namespace std;

int main() {
    int liczba = 256;
    string binLiczba;
    int binSize = log2( liczba ); //długość liczby binarnej
    for( int i = binSize; i >= 0; --i ) {
        binLiczba +=( liczba >> i & 1 ) + '0'; //testowanie bitu
       
    }
    cout << binLiczba << endl;
}
P-167044
« 1 »
  Strona 1 z 1