C#中的 ushort (UInt16) 位移

14

我需要对一个16位整数(ushort/UInt16)进行按位左移操作,但是C#中的按位运算符似乎只适用于int(32位)。我该如何在ushort上使用<<,或者至少通过简单的解决方案获得相同的结果?

1个回答

19
将移位后的结果转换回ushort类型:
ushort value = 1;
ushort shifted = (ushort)(value << 2);

<< 运算符中,value 会被隐式转换为 uint 吗? - xtofl
有点尴尬,这么简单的问题 :) 我也差不多这样做了,但是忘记在 (value << 2) 周围加上括号了。 - KBoek
@xtofl,值将被隐式转换为int。 - driis
@xtofl,像@driis所说的那样,使用int。还要注意,在这种情况下以及许多类似情况下,两种方式得到的结果都是相同的。 - Jon Hanna

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接