Skip to content

Instantly share code, notes, and snippets.

@Drawaes
Created January 19, 2017 02:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Drawaes/dc9617b2a32599b4acc74936e843e583 to your computer and use it in GitHub Desktop.
Save Drawaes/dc9617b2a32599b4acc74936e843e583 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 val)
{
//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