Пожалуйста, дайте мне знать, как работает оператор <> в C?

void main() { int x=5; printf("%d%d%d \n",x,x<>2); } 

Это операторы сдвига влево и вправо. Побитовые операции

<< и >> - операторы левого и правого сдвига соответственно.

Эти операторы применяют поразрядное смещение в левый операнд; количество позиций сдвига определяется правым операндом.

В этом примере мы имеем три выражения: x , (x << 2) и (x >> 2) .

При x = 5 значения этих выражений:

 Expr. Dec. Value Binary Value (Top 24 bits (all zero) ommitted) x 5 00000101 x << 2 20 00010100 x >> 2 1 00000001 

Обратите внимание, что сдвиг влево одной позиции эффективно умножает unsigned int на 2; Аналогично, сдвиг вправо делит целое число без знака на 2. Кроме того, зависит ли сдвиг от арифметического или логического (т.е. чувствительного к знаку), зависит от реализации.

<< сдвинется влево и >> вправо. Итак, в вашем примере x>>2 выбрасывает последние два бита из 5 (101 в двоичном формате). Это будет 1.

5<<2 - 20 (10100 в двоичном формате).

Это операторы логического сдвига, причем < означает Left Shift x times, а >>X означает Right Shift x раз.

Если у вас есть номер 14, он сохраняется как серия бит «00001110». Когда вы переместили сдвиг на это число 1 раз, сохраненная последовательность бит изменится на «00011100», и вы получите номер 28. Смещение числа слева - это то же самое, что умножение на 2, а смещение вправо - то же самое, что и деление на 2 В этом примере любые цифры на левой стороне, которые попадают в «девятое» пятно, просто исчезают, так как доступны только 8 бит. Для правильной смены применяются те же правила.

x< означает x * 2 ^ y (^ означает «до степени»), а x>>y означает x / 2 ^ y. Они хорошо определены только для положительных x , только для y меньших ширины типа x в битах, и если x подписано, только тогда, когда результат не переполняется.

Это в основном побитовые операторы сдвига.

Оператор сдвига слева приводит к смещению битового шаблона в первом операнде влево на количество бит, заданных вторым операндом. Величина сдвига влево (x << y) равна x * (2 ^ y)

00010111 LEFT-SHIFT на 1 = 00101110

Правильная смена делает то же самое, но сдвигает битовую диаграмму вправо. Величина правого сдвига выражения x >> y равна x / (2 ^ y)

00010111 RIGHT-SHIFT на 1 = 00001011