public void TestUInt64() { var b = sizeof(UInt64) * 8 - 1; var start = unchecked ((UInt64)(UInt64)1 << b); UInt64 v = start; for (var i = 0; i < (sizeof(UInt64) * 8) - 1; i++) { v = v.RorCopy(); var a = (UInt64)((UInt64)1 << (b - 1 - i)); _output?.WriteLine(Convert.ToString((Int64)a, 2).PadLeft(64, '0') + " == " + Convert.ToString((Int64)v, 2).PadLeft(64, '0')); Assert.Equal(a, v); } v = v.RorCopy(); _output?.WriteLine(Convert.ToString((Int64)start, 2).PadLeft(64, '0') + " == " + Convert.ToString((Int64)((UInt64)v), 2).PadLeft(64, '0')); Assert.Equal((UInt64)start, (UInt64)(UInt64)v); }