| ??? 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 |



