Цитата(Halfback @ Apr 4 2007, 01:59)

VAIKeil пишет ошибку деления на нуль

Если заменить операции деления и взятия модуля числа на более подходящие, получим макрос, работающий при любых условиях:
Код
#define BINARY(bits)\
((unsigned int)(\
(0##bits&7)|\
((0##bits>>3)&7)<<1|\
((0##bits>>6)&7)<<2|\
((0##bits>>9)&7)<<3|\
((0##bits>>12)&7)<<4|\
((0##bits>>15)&7)<<5|\
((0##bits>>18)&7)<<6|\
((0##bits>>21)&7)<<7|\
((0##bits>>24)&7)<<8|\
((0##bits>>27)&7)<<9|\
((0##bits>>30)&7)<<10|\
((0##bits>>33)&7)<<11|\
((0##bits>>36)&7)<<12|\
((0##bits>>39)&7)<<13|\
((0##bits>>42)&7)<<14|\
((0##bits>>45)&7)<<15))