Я читаю книгу по стандартам C ++: «Мышление в C ++» Брюса Эккеля.
Многие функции C ++ очень хорошо объяснены в этой книге, но я кое-что подошел к кирпичной стене, и может ли это помочь или нет, когда я хочу запрограммировать игру, например, это раздражаетмне, как это работает, и я действительно не могу получить это из приведенного объяснения.
Мне было интересно, может ли кто-нибудь здесь помочь мне объяснить, как на самом деле работает этот пример программы:
printBinary.h -
void printBinary(const unsigned char val);
printBinary.cpp -
#include <iostream>
void printBinary(const unsigned char val) {
for (int i = 7; i >= 0; i--) {
if (val & ( 1 << i))
std::cout << "1";
else
std::cout << "0";
}
}
Bitwise.cpp -
#include "printBinary.h"
#include <iostream>
using namespace std;
#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);
cin >> getval; b = getval;
PR ("b in binary: ", b);
PR("a | b = ", a | b);
Эта программа должна объяснить мне, как работают битовые операторы сдвига (<<) и (>>), но я просто не понимаюЯ имею в виду, конечно, я знаю, как это работает, используя cin и cout, но я глуп, что не понимаю этого?
Эта часть, в частности, смущает меня больше, чем остальные:
if (val & ( 1 << i))
Спасибо за любую помощь