По 6 точкам совпадает с лобовым вариантом. 
/* Разворот бит в слове */
unsigned short rvsbt(unsigned short v)
{
  unsigned short r = v; // r will be reversed bits of v; first get LSB of v
  int s = sizeof(v)*8 - 1; // extra shift needed at end
  while(v > 1)
  {
    v >>= 1;
    r <<= 1;
    r |= v & 1;
    s--;
  }
  return(r << s); // shift when v's highest bits are zero
}
/*
unsigned short rvsbt(unsigned short src)
{
  unsigned short dst = 0;
  #define N  (sizeof(src)*8 - 1)
  for(int i = 0; i <= N; i++)
  {
    if(src & (1 << i))
      dst |= 1 << (N - i);
  }
  return dst;
}
*/
void main(void)
{
  int val;
  val = 0x00FF; printf("rvsbt(0x%04X) -> 0x%04X\n", val, rvsbt(val));
  val = 0xFF00; printf("rvsbt(0x%04X) -> 0x%04X\n", val, rvsbt(val));
  val = 0x5A5A; printf("rvsbt(0x%04X) -> 0x%04X\n", val, rvsbt(val));
  val = 0xAAAA; printf("rvsbt(0x%04X) -> 0x%04X\n", val, rvsbt(val));
  val = 0x5AAA; printf("rvsbt(0x%04X) -> 0x%04X\n", val, rvsbt(val));
  val = 0xAA5A; printf("rvsbt(0x%04X) -> 0x%04X\n", val, rvsbt(val));
}
 
Снимок экрана сравнивающий бинарный код вашего (слева) и лобового варианта, собирал Tiny C (win32) - tcc main.c:
- 
	- Спасибо! - De_User(14.07.2018 18:00)
 
