プリプロセッサで基数変換

10進数→2進数
実装は非常に簡単(http://melpon.org/wandbox/permlink/NKeqHAbRSTsYap0a)

#include <boost/preprocessor.hpp>

#define PRED(n, state) BOOST_PP_TUPLE_ELEM(2, 1, state)

#define OP(d, state)                                               \
  (BOOST_PP_CAT(BOOST_PP_MOD(BOOST_PP_TUPLE_ELEM(2, 1, state), 2), \
                BOOST_PP_TUPLE_ELEM(2, 0, state)),                 \
   BOOST_PP_DIV(BOOST_PP_TUPLE_ELEM(2, 1, state), 2))

#define BINARY(n)                                                            \
  BOOST_PP_IF(n, BOOST_PP_TUPLE_ELEM(                                        \
                     2, 0, BOOST_PP_WHILE(PRED, OP, (BOOST_PP_EMPTY(), n))), \
              0)
BINARY(0)
BINARY(1)
BINARY(15)
BINARY(127)

出力

0
1
1111
1111111

しかし、どうせBOOST_PPをもってしても除算などが255までしか扱えないなら変換テーブル作ってしまえばいいですね…。

BINARY0 0
...
BINARY127 1111111

BINARY(num) BOOST_PP_CAT(BINARY, num)