Так не оптимально! надо сдвигать и добавлять младший бит ( distance=(distance<<1)| temp )! и потом клоки жутко не семметричные получатся такие вещи проще на асме писать. И какой вы компилер используете?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)