We all love bits - моля за пояснение

Стигнах до следното решение: http://pastebin.com/YMuVpZuw

Отговорите не са ми верни, огледах условието, може би от умора не мога да видя...реших направо да питам :)
Поотделно inverse i b дават верни резултати, но по формулата на Митко излиза съвсем друго, също така установих че дава вярно решение ако сложа като Аутпут "b" - toest продукта на следния код:

  1. int b = 0;
  2.                 while (!= 0)
  3.                 {
  4.                     b = b << 1;
  5.                     b = b | (& 1);
  6.                     p = p >> 1;
  7.                 }



    Доколкото разбирам от условието целта не е само да invert числото.