// Задание константы в двоичном виде
// Пример вызова:
// BIN8(11110101)
// BIN16(11110101,11001100)
// BIN32(11110101,11001100,11001111,01010101)
//----------------------------------------------------------
#define LongTobin_(n) \
(\
((n >> 21) & 0x80) | \
((n >> 18) & 0x40) | \
((n >> 15) & 0x20) | \
((n >> 12) & 0x10) | \
((n >> 9) & 0x08) | \
((n >> 6) & 0x04) | \
((n >> 3) & 0x02) | \
((n ) & 0x01) \
)
#define __BIN_(n) LongTobin_(0x##n##l)
#define BIN8(n) __BIN_(n)
#define BIN16(b1,b2) ((__BIN_(b1) << 8) + __BIN_(b2))
#define BIN32(b1,b2,b3,b4) ((__BIN_(b1) << 24) + \
(__BIN_(b2) << 16) + (__BIN_(b3) << 8) + __BIN_(b4))