2 using System.Collections.Generic;
5 using System.Threading.Tasks;
11 protected uint nWidth;
14 public static bool operator !(base_uint a)
16 for (int i = 0; i < a.nWidth; i++)
26 public static base_uint operator ~(base_uint a)
28 var ret = new base_uint();
29 for (int i = 0; i < a.nWidth; i++)
36 public static base_uint operator -(base_uint a)
38 var ret = new base_uint();
39 for (int i = 0; i < a.nWidth; i++)
47 public static base_uint operator ++(base_uint a)
51 while (++a.pn[i] == 0 && i < a.nWidth - 1)
58 public static base_uint operator --(base_uint a)
62 while (--a.pn[i] == uint.MaxValue && i < a.nWidth - 1)
69 public static base_uint operator ^(base_uint a, base_uint b)
71 var c = new base_uint();
72 c.pn = new uint[a.nWidth];
73 for (int i = 0; i < c.nWidth; i++)
75 c.pn[i] = a.pn[i] ^ b.pn[i];
80 public static base_uint operator +(base_uint a, base_uint b)
82 var result = new base_uint();
84 for (int i = 0; i < result.nWidth; i++)
86 ulong n = carry + a.pn[i] + b.pn[i];
87 result.pn[i] = (uint)(n & 0xffffffff);