2010-09-29 6 views
9

Potrzebuję wykonać bitowe przesunięcie w lewo na 16-bitowej liczbie całkowitej (ushort/UInt16), ale operatory bitowe w C# wydają się odnosić tylko do int (32-bit). W jaki sposób mogę użyć < na ushortach, lub przynajmniej uzyskać taki sam rezultat z prostym obejściem?C# przesunięcie bitowe na ushort (UInt16)

Odpowiedz

10

Obsada wartość wynikową z powrotem do ushort po przeniesieniu:

ushort value = 1; 
ushort shifted = (ushort)(value << 2); 
+0

będzie 'value' być niejawnie konwertowane do' uint' dla '' << operatora? – xtofl

+0

prawie krępujące, więc po prostu to było :) Zrobiłem prawie to samo, ale zapomniałem nawiasów wokół (wartość << 2) – KBoek

+0

@xtofl, wartość zostanie niejawnie przekonwertowana na int. – driis