Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
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


List of 10 messages in thread
TopicAuthorDate
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      

Back to Subject List