ошибку искать лень, раз хотите научиться - давайте учиться...
Битовые операции в С++ представлены набором операторов: << - побитовый сдвиг влево; >> побитовый сдвиг вправо.
С лева от оператора ставится объект над которым будет производиться сдвиг, с права от оператора - кол-во бит, на которое нужно сдвинуть число.
Таким образом, если у нас есть число к примеру 5, что в двоичной системе выглядит как 0101.
int i = 5; // переменная целого типа содержащая в себе значение 5 или 101b.
теперь, если сделать i << 1; то результат этой операции будет сдвиг влево числа на 1 байт и будет выглядеть как:
1010b; или 10 в десятичной.
если же сдвинуть в другую сторону, то получится следующее: i >> 1; результат: 10b (т.е. первый бит "исчезает") и таким образом мы получаем результат в десятичной системе равный 2.
Так же из битовых операций есть операторы:
& - логическое "И"
| - логическое "или"
~ - инверсия (т.е. если у вас есть набор бит: 1010, то применив этот оператор вы получите 0101)
^ - вроде xor (тут не помню)
про то, как работают эти операторы, думаю рассказывать не стоит, если стоит - то почитайте булеву алгебру, т.к. в программирование вы тогда рановато подались
2
|