??? 08/21/08 12:13 Read: times |
#157626 - binconst.h Responding to: ???'s previous message |
#ifndef BINCONST_H #define BINCONST_H /* Binary constant generator macros evaluating to compile-time constants * * Based on work by Tom Torfs donated to the public domain * * Sample usage: * * B8(01010101) = 85 * B16(10101010,01010101) = 43605 * B32(10000000,11111111,10101010,01010101) = 2164238933 */ /* For up to 8-bit binary constants */ #define B8(b) ((unsigned char)B8__(HEX__(b))) /* For up to 16-bit binary constants, MSB first */ #define B16(b1,b0) (((unsigned short)B8(b1)<<8) | B8(b0)) /* For up to 32-bit binary constants, MSB first */ #define B32(b3,b2,b1,b0) (((unsigned long)B8(b3)<<24) | \ ((unsigned long)B8(b2)<<16) | \ ((unsigned long)B8(b1)<< 8) | \ B8(b0)) /* Helper macros not to be used directly */ #define HEX__(n) 0x##n##UL #define B8__(x) (((x&0xF0000000UL)?0x80:0) | \ ((x&0x0F000000UL)?0x40:0) | \ ((x&0x00F00000UL)?0x20:0) | \ ((x&0x000F0000UL)?0x10:0) | \ ((x&0x0000F000UL)?0x08:0) | \ ((x&0x00000F00UL)?0x04:0) | \ ((x&0x000000F0UL)?0x02:0) | \ ((x&0x0000000FUL)?0x01:0)) #endif |
Topic | Author | Date |
Keil (Binary numbers) | 01/01/70 00:00 | |
Not possible | 01/01/70 00:00 | |
C does not allow it But... | 01/01/70 00:00 | |
Binary in C | 01/01/70 00:00 | |
Grouping works too | 01/01/70 00:00 | |
my way | 01/01/70 00:00 | |
All depending on needs | 01/01/70 00:00 | |
To be precise | 01/01/70 00:00 | |
It is not an omission![]() | 01/01/70 00:00 | |
binconst.h | 01/01/70 00:00 |