From d78df821bf401a0fc899b8ff440f40c529285fef Mon Sep 17 00:00:00 2001 From: Danny Robson Date: Tue, 15 Jul 2014 19:49:29 +1000 Subject: [PATCH] bitwise: add bit reverse operation --- bitwise.hpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/bitwise.hpp b/bitwise.hpp index 96c98022..b4a498af 100644 --- a/bitwise.hpp +++ b/bitwise.hpp @@ -52,5 +52,22 @@ rotater (const T &value, size_t magnitude) { #undef MODT +// TODO: make constexpr for C++14 +template +T +reverse (T value) { + T out = value; + + size_t bits = sizeof (value) * 8 - 1; + for (value >>= 1; value; value >>= 1) { + out <<= 1; + out |= value & 0x01; + --bits; + } + + out <<= bits; + return out; +} + #endif