double arrow

Операции сдвига. Операции сдвига осуществляют поразрядный сдвиг операнда

Операции сдвига осуществляют поразрядный сдвиг операнда. Величина сдвига определяется значением правого операнда. Сдвигаемые разряды теряются. При сдвиге вправо знаковый разряд размножается.

1) << сдвиг влево Разряды левого операнда сдвигаются влево на число позиций, указанное правым операндом. Освобождающиеся позиции заполняются нулями, а разряды, сдвигаемые за левый предел левого операнда, теряются.

(10001010)<<2 = = 00101000

2) >> сдвиг вправо Разряды левого операнда сдвигаются вправо на число позиций, указанное правым операндом. Разряды, сдвигаемые за правый предел левого операнда, теряются. Для беззнаковых чисел освобожденные слева разряды заполняются нулями. Для чисел со знаком левый разряд принимает значение знака.

(10001010)>>2 = = 00100010

Эти операции выполняют эффективное умножение и деление на степени 2:

number<<n – умножает number на 2 в n-й степени

number>>n – делит number на 2 в n-й степени

6.6. Операция условия?:

Операция состоит из двух частей (? и:) и содержит три операнда (операнд1? операнд2: операнд 3). Это более короткий способ записи оператора if else и называется «условным выражением».

Например: условное выражение x = (y<0)? –y: y; означает, что если у меньше 0, то х = -у, в противном случае х = у. В терминах оператора if else это выглядело бы так:

if(y<0)

x = -y;

else

x = y;

Условные выражения более компактны и приводят к получению более компактного машинного кода.

Т.о. если условие операнда 1 истинно, то значением условного выражения является величина операнда 2, если условие операнда 1 ложно – величина операнда 2.

Условное выражение удобно использовать, когда имеется некоторая переменная, которой можно присвоить одно из двух возможных значений.

max = (а>b)? a: b;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: