Skip to content

Instantly share code, notes, and snippets.

@benaadams
Forked from Drawaes/Odd results?
Last active January 19, 2017 02:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save benaadams/baa9d6f85017f969d1877ef2731c9bef to your computer and use it in GitHub Desktop.
Save benaadams/baa9d6f85017f969d1877ef2731c9bef to your computer and use it in GitHub Desktop.
public static void Main(string[] args)
{
var x = Flip(10000);
var y = FlipNew(10000);
////var bench = new ReverseBench();
////bench.FlipInSets64Bit();
//BenchmarkRunner.Run<ReverseBench>();
}
public unsafe static ulong Flip(ulong data)
{
var val = data;
//ulong val = 0;
//Unsafe.Write(&val, value);
val = (val << 56)
| ((val & 0xFF00U) << 40)
| ((val & 0xFF0000U) << 24)
| ((val & 0xFF000000U) << 8)
| ((val & 0xFF00000000U) >> 8)
| ((val & 0xFF0000000000U) >> 24)
| ((val & 0xFF000000000000UL) >> 40)
| (val >> 56);
//return Unsafe.Read<ulong>(&val);
return val;
}
public unsafe static ulong FlipNew(ulong val)
{
//ulong val = 0;
//Unsafe.Write(&val, value);
val = ((val & 0xFFFF0000FFFF0000UL) >> 16) | ((val & 0x0000FFFF0000FFFFUL) << 16);
val = ((val >> 8) & 0xFF00FF00FF00FF00UL) | ((val << 8) & 0x00FF00FF00FF00FFUL);
val = (val << 32) | (val >> 32);
//return Unsafe.Read<ulong>(&val);
return val;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment