using System; public class Test { public static void Main() { bool fine = true; for (int i = -5 ; i != 6 ; i++) { for (int j = -5 ; j != 6 ; j++) { ulong c = Combine(i, j); int iBack, jBack; Decombine(c, out iBack, out jBack); if (i != iBack || j != jBack) { fine = false; Console.WriteLine("{0}/{1} {2}/{3}", i, iBack, j, jBack); } } } if (fine) { Console.WriteLine("OK"); } } private static ulong Combine(int a, int b) { uint ua = (uint)a; ulong ub = (uint)b; return ub <<32 | ua; } private static void Decombine(ulong c, out int a, out int b) { a = (int)(c & 0xFFFFFFFFUL); b = (int)(c >> 32); } }