C语言中使用二进制常量(二)

2014-11-24 11:08:47 · 作者: · 浏览: 6
define B10010100 94
#define B10010101 95
#define B10010110 96
#define B10010111 97
#define B10011000 98
#define B10011001 99
#define B10011010 9A
#define B10011011 9B
#define B10011100 9C
#define B10011101 9D
#define B10011110 9E
#define B10011111 9F
#define B10100000 A0
#define B10100001 A1
#define B10100010 A2
#define B10100011 A3
#define B10100100 A4
#define B10100101 A5
#define B10100110 A6
#define B10100111 A7
#define B10101000 A8
#define B10101001 A9
#define B10101010 AA
#define B10101011 AB
#define B10101100 AC
#define B10101101 AD
#define B10101110 AE
#define B10101111 AF
#define B10110000 B0
#define B10110001 B1
#define B10110010 B2
#define B10110011 B3
#define B10110100 B4
#define B10110101 B5
#define B10110110 B6
#define B10110111 B7
#define B10111000 B8
#define B10111001 B9
#define B10111010 BA
#define B10111011 BB
#define B10111100 BC
#define B10111101 BD
#define B10111110 BE
#define B10111111 BF
#define B11000000 C0
#define B11000001 C1
#define B11000010 C2
#define B11000011 C3
#define B11000100 C4
#define B11000101 C5
#define B11000110 C6
#define B11000111 C7
#define B11001000 C8
#define B11001001 C9
#define B11001010 CA
#define B11001011 CB
#define B11001100 CC
#define B11001101 CD
#define B11001110 CE
#define B11001111 CF
#define B11010000 D0
#define B11010001 D1
#define B11010010 D2
#define B11010011 D3
#define B11010100 D4
#define B11010101 D5
#define B11010110 D6
#define B11010111 D7
#define B11011000 D8
#define B11011001 D9
#define B11011010 DA
#define B11011011 DB
#define B11011100 DC
#define B11011101 DD
#define B11011110 DE
#define B11011111 DF
#define B11100000 E0
#define B11100001 E1
#define B11100010 E2
#define B11100011 E3
#define B11100100 E4
#define B11100101 E5
#define B11100110 E6
#define B11100111 E7
#define B11101000 E8
#define B11101001 E9
#define B11101010 EA
#define B11101011 EB
#define B11101100 EC
#define B11101101 ED
#define B11101110 EE
#define B11101111 EF
#define B11110000 F0
#define B11110001 F1
#define B11110010 F2
#define B11110011 F3
#define B11110100 F4
#define B11110101 F5
#define B11110110 F6
#define B11110111 F7
#define B11111000 F8
#define B11111001 F9
#define B11111010 FA
#define B11111011 FB
#define B11111100 FC
#define B11111101 FD
#define B11111110 FE
#define B11111111 FF

#define _B8(B0) 0x ## B0
#define _B16(B1,B0) 0x ## B1 ## B0
#define _B32(B3,B2,B1,B0) 0x ## B3 ## B2 ## B1 ## B0
#define B8(B0) _B8(B0)
#define B16(B1,B0) _B16(B1,B0)
#define B32(B3,B2,B1,B0) _B32(B3,B2,B1,B0)

const char * bin(unsigned int value, int width)
{
static char binstr[33];
int pos;

if(width < 0 || width > 32) return NULL;

binstr[width] = 0;
for(pos = width - 1; pos >= 0; pos--)
{
binstr[pos] = (value & 0x01) '1' : '0';
value >>= 1;
}

return binstr;
}

int main()
{
int value8 = B8(B10011001);
int value16 = B16(B10011001,B10101010);
int value32 = B32(B10011001,B10101010,B10111011,B11001100);
int i;

printf("0x%08X, 0b%s\n", value8, bin(value8, 8));
printf("0x%08X, 0b%s\n", value16, bin(value16, 16));
printf("0x%08X, 0b%s\n", value32, bin(value32, 32));

for(i = 0; i < 256; i++)