С# побитовый сдвиг на ushort (UInt16)

Мне нужно выполнить побитовый сдвиг влево для 16-битного целого числа (ushort/UInt16), но побитовые операторы в С#, похоже, применяются только к int (32-битному). Как я могу использовать ‹‹ на ushort или, по крайней мере, получить тот же результат с помощью простого обходного пути?


person KBoek    schedule 29.09.2010    source источник


Ответы (1)


Приведите полученное значение обратно в ushort после сдвига:

ushort value = 1;
ushort shifted = (ushort)(value << 2);
person driis    schedule 29.09.2010
comment
будет ли value неявно преобразовано в uint для оператора <<? - person xtofl; 29.09.2010
comment
почти неловко, так просто это было :) Я сделал почти то же самое, но забыл скобки вокруг (значение ‹‹ 2) - person KBoek; 29.09.2010
comment
@xtofl, значение будет неявно преобразовано в целое число. - person driis; 29.09.2010
comment
@xtofl, int как говорит @driis. Обратите также внимание, что в этом случае и во многих подобных случаях результат будет одинаковым в любом случае. - person Jon Hanna; 29.09.2010