FAQ:ANSI CPP:задать значение константы в двоичном представлении — различия между версиями
Материал из Весельчак У
RXL (обсуждение | вклад) (Ветвление FAQ:ANSI CPP) |
(нет различий)
|
Версия 22:08, 28 июля 2008
Как задать значение константы в двоичном представлении (т.е. единицами и нулями в виде битового поля)?
Мможно использовать макросы. Например:
// МАКРОСЫ ДЛЯ ДВОИЧНЫХ ЧИСЕЛ // байт #define _b8(b) ((BYTE)(\ (b & 0x10000000 ? 0x80 : 0) | (b & 0x01000000 ? 0x40 : 0) |\ (b & 0x00100000 ? 0x20 : 0) | (b & 0x00010000 ? 0x10 : 0) |\ (b & 0x00001000 ? 0x08 : 0) | (b & 0x00000100 ? 0x04 : 0) |\ (b & 0x00000010 ? 0x02 : 0) | (b & 0x00000001 ? 0x01 : 0))) // слово #define __b16(b16) ((WORD)((_b8(((unsigned __int64)b16) >> 32) << 8)|(_b8(b16)))) // двойное слово #define __b32(b16H, b16L) ((DWORD)(((__b16(b16H)) << 16)|(__b16(b16L)))) // пример: BYTE by; by = _b8(0x01010110); // 0x56 by = _b8(0x111); // 7 WORD w; w = __b16(0x0111011011010011); // 0x76d3 DWORD dwd; dwd = __b32(0x0101010110110011, 0x0101111011010001); // 0x55B35ED1 dwd = __b32(0x1000101110101010, 0x11010101); // 0x8BAA00D5