bitarithm.h File Reference

Helper functions for bit arithmetic. More...

Detailed Description

Helper functions for bit arithmetic.

Author
Kaspar Schleiser kaspa.nosp@m.r@sc.nosp@m.hleis.nosp@m.er.d.nosp@m.e
Martine Lenders mlend.nosp@m.ers@.nosp@m.inf.f.nosp@m.u-be.nosp@m.rlin..nosp@m.de

Definition in file bitarithm.h.

#include <stdint.h>
#include "cpu_conf.h"
+ Include dependency graph for bitarithm.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define ARCH_32_BIT   (__INT_MAX__ == 2147483647)
 1 for 32 bit architectures, 0 otherwise
 

Functions

unsigned bitarithm_msb (unsigned v)
 Returns the number of the highest '1' bit in a value. More...
 
static unsigned bitarithm_lsb (unsigned v)
 Returns the number of the lowest '1' bit in a value. More...
 
unsigned bitarithm_bits_set (unsigned v)
 Returns the number of bits set in a value. More...
 
uint8_t bitarithm_bits_set_u32 (uint32_t v)
 Returns the (uint32_t version) number of bits set in a value. More...
 
#define SETBIT(val, bit)   val |= (bit)
 Sets a bitmask for a bitfield. More...
 
#define CLRBIT(val, bit)   val &= (~(bit))
 Clears bitmask for a bitfield. More...
 

Single Bit Defines

#define BIT0   0x00000001
 
#define BIT1   0x00000002
 
#define BIT2   0x00000004
 
#define BIT3   0x00000008
 
#define BIT4   0x00000010
 
#define BIT5   0x00000020
 
#define BIT6   0x00000040
 
#define BIT7   0x00000080
 
#define BIT8   0x00000100
 
#define BIT9   0x00000200
 
#define BIT10   0x00000400
 
#define BIT11   0x00000800
 
#define BIT12   0x00001000
 
#define BIT13   0x00002000
 
#define BIT14   0x00004000
 
#define BIT15   0x00008000
 
#define BIT16   0x00010000
 
#define BIT17   0x00020000
 
#define BIT18   0x00040000
 
#define BIT19   0x00080000
 
#define BIT20   0x00100000
 
#define BIT21   0x00200000
 
#define BIT22   0x00400000
 
#define BIT23   0x00800000
 
#define BIT24   0x01000000
 
#define BIT25   0x02000000
 
#define BIT26   0x04000000
 
#define BIT27   0x08000000
 
#define BIT28   0x10000000
 
#define BIT29   0x20000000
 
#define BIT30   0x40000000
 
#define BIT31   0x80000000
 

Macro Definition Documentation

◆ CLRBIT

#define CLRBIT (   val,
  bit 
)    val &= (~(bit))

Clears bitmask for a bitfield.

Parameters
[in]valThe bitfield
[in]bitSpecifies the bits to be cleared
Returns
The modified bitfield

Definition at line 52 of file bitarithm.h.

◆ SETBIT

#define SETBIT (   val,
  bit 
)    val |= (bit)

Sets a bitmask for a bitfield.

Parameters
[in]valThe bitfield
[in]bitSpecifies the bits to be set
Returns
The modified bitfield

Definition at line 41 of file bitarithm.h.

Function Documentation

◆ bitarithm_bits_set()

unsigned bitarithm_bits_set ( unsigned  v)

Returns the number of bits set in a value.

Parameters
[in]vInput value with platform-dependent word size
Returns
Number of set bits

◆ bitarithm_bits_set_u32()

uint8_t bitarithm_bits_set_u32 ( uint32_t  v)

Returns the (uint32_t version) number of bits set in a value.

Parameters
[in]vInput value with 32 bit size
Returns
Number of set bits

◆ bitarithm_lsb()

static unsigned bitarithm_lsb ( unsigned  v)
inlinestatic

Returns the number of the lowest '1' bit in a value.

Parameters
[in]vInput value - must be unequal to '0', otherwise the function will produce an infinite loop
Returns
Bit Number

Definition at line 141 of file bitarithm.h.

◆ bitarithm_msb()

unsigned bitarithm_msb ( unsigned  v)

Returns the number of the highest '1' bit in a value.

Parameters
[in]vInput value
Returns
Bit Number

Source: http://graphics.stanford.edu/~seander/bithacks.html#IntegerLogObvious