2016-01-11 1 views
8

У меня есть следующий фрагмент кода примера:C# UINT, чтобы UShort переполнения, как в нативных C

UInt16 a = 0x3A; 
UInt16 b = 0xFFDF; 
UInt16 result = Convert.ToUInt16(a - b); 

линия 3 ошибки с переполнением исключением. Однако я хочу достичь такого же результата, как если бы я вычитал 2 unsigned shorts в C, и они превысили/underflow.

Каков наилучший способ достичь этого?

ответ

9

Вы могли бы замаскировать нижние 16 бит следующим образом:

UInt16 result = Convert.ToUInt16((a - b) & 0xffff); 
+0

Можно также использовать [непроверенный контекст] (https://msdn.microsoft.com/library/a569z7k8.aspx): 'USHORT результата = бесконтрольно ((USHORT) (AB)); ' –

Смежные вопросы