Pomoc w zrozumieniu programu...(c++)

0
 #include <iostream>
using namespace std;
unsigned char rol(unsigned char val) {
  int highbit;
  if(val & 0x80) // 0x80 is the high bit only
    highbit = 1;
  else
    highbit = 0;
  // Left shift (bottom bit becomes 0):
  val <<= 1;
  // Rotate the high bit onto the bottom:
 val |= highbit;

  return val;
}

//**************************************88

unsigned char ror(unsigned char val) {
  int lowbit;
  if(val & 1) // Check the low bit
    lowbit = 1;
  else
    lowbit = 0;
  val >>= 1; // Right shift by one position
  // Rotate the low bit onto the top:
  val |= (lowbit << 7);
  return val;
} ///:~

void printBinary(const unsigned char val)
{
    for(int i = 7; i >=0; i--)
    {
        if(val & (1<<i))
        cout << "1";
        else
        cout << "0";
       
    }
}

//***************************************8


// A macro to save typing:
#define PR(STR, EXPR) \
  cout << STR; printBinary(EXPR); cout << endl;

int main() {
  unsigned int getval;
  unsigned char a, b;
  cout << "Enter a number between 0 and 255: ";
  cin >> getval; a = getval;
  PR("a in binary: ", a);
  cout << "Enter a number between 0 and 255: ";
  cin >> getval; b = getval;
  PR("b in binary: ", b);
  PR("a | b = ", a | b);
  PR("a & b = ", a & b);
  PR("a ^ b = ", a ^ b);
  PR("~a = ", ~a);
  PR("~b = ", ~b);
  // An interesting bit pattern:
  unsigned char c = 0x5A;
  PR("c in binary: ", c);
  a |= c;
  PR("a |= c; a = ", a);
  b &= c;
  PR("b &= c; b = ", b);
  b ^= a;
  PR("b ^= a; b = ", b);
 rol(b);
 ror(a);
} ///:~
0

rol - przesuwa bity o jedną pozycję w lewo, pierwszy ląduje na ostatniej pozycji
ror - przesuwa bity o jedną pozycję w prawo, ostatni ląduje na pierwszej pozycji
printBinary - wypisuje bity od pierwszego do ostatniego

0

No i Wibowit o to mi właśnie chodzi między innymi...dlaczego te RoR i RoL nic nie wypisuje? Próbowałem kilku możliwości i nic... ;/

0
PR("rol b",rol(b));
 PR("ror b",ror(b));

Dlatego, że czytasz to Thinking in C++ i chyba go za bardzo nie rozumiesz, tylko klepiesz na pałę z książki..

0

Skąd wiesz, że czytam?

0

A drugi tom czytałeś?

0

rol i ror nic nie wypisują, bo przede wszystkim nie ma w nich żadnej instrukcji, która by coś wypisywała na ekran. Poza tym podane implementacje rol i ror pobierają argument przez wartość i zwracają wartość zmodyfikowaną, więc odpalanie rol i ror bez robienia czegokolwiek z wynikiem jest bezsensowne.

0

Dzięki.
Trochę się w tym pogubiłem (ciągle się uczę) dziękuję Wam za pomoc.

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