2010-09-29 32 views
9

Tôi cần phải thực hiện một sự thay đổi bitwise trái trên một số nguyên 16 bit (ushort/UInt16), nhưng các toán tử bitwise trong C# dường như chỉ áp dụng cho int (32-bit). Làm thế nào tôi có thể sử dụng < < trên một ushort, hoặc ít nhất có được kết quả tương tự với một workaround đơn giản?C# bitwise shift trên ushort (UInt16)

Trả lời

10

Cast giá trị kết quả trở lại vào ushort phục hồi sau nương:

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

sẽ 'giá trị' được ngầm chuyển đổi cho' uint' cho môi trường '<< 'điều hành? – xtofl

+0

gần như lúng túng, vì vậy chỉ đơn giản là điều này :) Tôi đã gần như giống nhau, nhưng quên các dấu ngoặc xung quanh (giá trị << 2) – KBoek

+0

@xtofl, giá trị sẽ được chuyển hoàn toàn sang int. – driis