
C/C++
Что делает ^2 (или вообще ^) в C++? У меня на выводе он то прибавляет, то вычитает 2(+скрин).

Исключающее "или" по очереди сравнивает все биты, если на какой-то позиции оба 0 или оба 1 → оставляет 0, Если один из них 1, а другой 0 → записывает 1. Соответственно:
десятичное 2 в двоичном будет 10
десятичное 12 в двоичном: 1100
1100 ^ 0010 → 1110 → 14
Десятичное 34 → 100010
100010 ^
000010
100000 → 32
Ну т. е. если в двоичном представлении исходного числа на второй позиции считая справа, стоит `0` — оно добавит двойку. А если там уже `1` — вычтет.
___________
P.s. получается такая картина:
00 → 0000 // +2
01 → 0001 // +2
02 → 0010 // -2
03 → 0011 // -2
04 → 0100 // +2
05 → 0101 // +2
06 → 0110 // -2
07 → 0111 // -2
08 → 1000 // +2
09 → 1001 // +2
10 → 1010 // -2
11 → 1011 // -2
12 → 1100 // +2
13 → 1101 // +2
14 → 1110 // -2
15 → 1111 // -2
P.p.s. Только что обнаружил, вместо if ( x == 2 ) можно написать if ( !(x^2) ) и делать вид, что ты хацкер)
десятичное 2 в двоичном будет 10
десятичное 12 в двоичном: 1100
1100 ^ 0010 → 1110 → 14
Десятичное 34 → 100010
100010 ^
000010
100000 → 32
Ну т. е. если в двоичном представлении исходного числа на второй позиции считая справа, стоит `0` — оно добавит двойку. А если там уже `1` — вычтет.
___________
P.s. получается такая картина:
00 → 0000 // +2
01 → 0001 // +2
02 → 0010 // -2
03 → 0011 // -2
04 → 0100 // +2
05 → 0101 // +2
06 → 0110 // -2
07 → 0111 // -2
08 → 1000 // +2
09 → 1001 // +2
10 → 1010 // -2
11 → 1011 // -2
12 → 1100 // +2
13 → 1101 // +2
14 → 1110 // -2
15 → 1111 // -2
P.p.s. Только что обнаружил, вместо if ( x == 2 ) можно написать if ( !(x^2) ) и делать вид, что ты хацкер)
Операции с двоичными разрядами
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0
Ерлан Базарбаев
С помощью Исключающего ИЛИ можно даже переключать регистр символа, хранящегося в переменной (но только для ограниченных групп символов, например, для латинских букв).
логическое ИЛИ (побитовое)
Фриц Моисеевич Морген
^ оно само в с++ обозначение как "СТЕПЕНЬ"
Владимир Летуновский
А почему с числами такие операции происходят? Потому что он сделан только для bool и глючит с int?
Фриц Моисеевич Морген
0^ оно не может сразу отнимать и прибавлять
Похожие вопросы
- Неправильный вывод программы C++
- C++ как происходит вывод?
- Задача по C++
- Какие из этих книг вы посоветуете прочесть в первую очередь чтобы повысить свои знания в C/C++?
- Почему создатель Linux Линус Торвальдс называет C++ ужасным языком, а ядро ОС Linux пишется только на Си?
- C++ напишите функцию 2 треугольника похожи или нет
- Вывод нечетных номеров, а затем четных в C, помогите пожалуйста
- День добрый \[-_-]/ вопрос по вузовскому программированию на си(C)
- Задача на C++ (Остатки).
- Программирование C++ ПРОШУ ПОМОЧЬ!