Как можно понят это в с++ ? n ^ (n >> 1)

0 голосов

Как можно понят это в с++ ?
n ^ (n >> 1)


спросил от (81 баллов) в категории Информатика
1 Ответ
0 голосов
ответил от Супер бакалавр (19.7k баллов)
 
Лучший ответ

Это понимать так, как и написано: n XOR x, где x равно (n>>1) (число, которое получится, если побитово сдвинуть n вправо на 1).
Побитовый сдвиг это такая операция, при которой двоичная запись числа сдвигается на указанное количество бит вправо или влево, а пустые биты заполняются значением бита знака числа n (+ это 0, минус это 1).
Например переменная n размером 1 байт имеет значение 7, это выглядит как 00000111. Если выполнить операцию n>>1, то надо просто стереть (1) одну правую единицу, а слева дописать один ноль (ноль, потому что n положительное, если бы n было отрицательное, то дописывается 1). Получится 00000011=3, то есть 7>>1 = 3.
Таким образом (если n=7), исходная запись означала бы n^(n>>1) = 7 XOR (7>>1) = 7 XOR 3 = 00000111 XOR 00000011 = 00000100 = 4
Вроде так как-то.

оставил комментарий от Архангел (142k баллов)

Не так. Операция ^ в С++ - это "поразрядное (побитовое) исключающее ИЛИ", операция, также известная, как xor, и ничего общего не имеющая с возведением в степень.

оставил комментарий от Супер бакалавр (19.7k баллов)

Скузи, не знал. Действительно в C++ это XOR.

...