Operacje logiczne na bitach.

0

Witam, próbuję dokonać operacji arytmetycznych na bitach.
Próbuję zrobić operację &, ale coś nie wychodzi:

    unsigned char *d = new unsigned char[2];
    unsigned char *dR = new unsigned char[2];

    d[0] = 31;
    d[1] = 0;

    dR[0] = d[0] & 00111111;
    dR[1] = (d[0] >> 7) & 1;

    std::cout << "Wynik operacji: " << std::dec << (unsigned short)dR[1] << " " << std::dec << (unsigned short)dR[0] << "\n";

To powinno być chyba rozwiązane tak:

0001 1111
0011 1111 &
0001 1111 =

A mój program wypisuje 0 9.
Co nie tak rozumiem, lub źle robię?

8

00111111 to liczba zapisana ósemkowo, dziesiętnie 37449, a binarnie 1001001001001001. Użyj 0b111111, albo 0x3F

PS: https://dsp.krzaq.cc/post/176/ucze-sie-cxx-kiedy-uzywac-new-i-delete/

0

Wielkie dzięki, nie zauważyłem tego ;)

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