Helper functions for bit arithmetic. More...
Helper functions for bit arithmetic.
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 | |
| static unsigned | bitarithm_msb (unsigned v) |
| Returns the number of the highest '1' bit in a value. | |
| static unsigned | bitarithm_lsb (unsigned v) |
| Returns the number of the lowest '1' bit in a value. | |
| unsigned | bitarithm_bits_set (unsigned v) |
| Returns the number of bits set in a value. | |
| uint8_t | bitarithm_bits_set_u32 (uint32_t v) |
| Returns the (uint32_t version) number of bits set in a value. | |
| unsigned | bitarith_msb_32bit_no_native_clz (unsigned v) |
| Returns the number of the highest '1' bit in a value. | |
| static uint8_t | bitarithm_clzb (uint8_t x) |
Returns the number of leading 0-bits in x, starting at the most significant bit position. | |
| static unsigned | bitarithm_test_and_clear (unsigned state, uint8_t *index) |
Used for iterating over the bits in state. | |
| #define | SETBIT(val, bit) |
| Sets a bitmask for a bitfield. | |
| #define | CLRBIT(val, bit) |
| Clears bitmask for a bitfield. | |
Single Bit Defines | |
| #define | BIT0 0x00000001 |
| Bit 0 set define. | |
| #define | BIT1 0x00000002 |
| Bit 1 set define. | |
| #define | BIT2 0x00000004 |
| Bit 2 set define. | |
| #define | BIT3 0x00000008 |
| Bit 3 set define. | |
| #define | BIT4 0x00000010 |
| Bit 4 set define. | |
| #define | BIT5 0x00000020 |
| Bit 5 set define. | |
| #define | BIT6 0x00000040 |
| Bit 6 set define. | |
| #define | BIT7 0x00000080 |
| Bit 7 set define. | |
| #define | BIT8 0x00000100 |
| Bit 8 set define. | |
| #define | BIT9 0x00000200 |
| Bit 9 set define. | |
| #define | BIT10 0x00000400 |
| Bit 10 set define. | |
| #define | BIT11 0x00000800 |
| Bit 11 set define. | |
| #define | BIT12 0x00001000 |
| Bit 12 set define. | |
| #define | BIT13 0x00002000 |
| Bit 13 set define. | |
| #define | BIT14 0x00004000 |
| Bit 14 set define. | |
| #define | BIT15 0x00008000 |
| Bit 15 set define. | |
| #define | BIT16 0x00010000 |
| Bit 16 set define. | |
| #define | BIT17 0x00020000 |
| Bit 17 set define. | |
| #define | BIT18 0x00040000 |
| Bit 18 set define. | |
| #define | BIT19 0x00080000 |
| Bit 19 set define. | |
| #define | BIT20 0x00100000 |
| Bit 20 set define. | |
| #define | BIT21 0x00200000 |
| Bit 21 set define. | |
| #define | BIT22 0x00400000 |
| Bit 22 set define. | |
| #define | BIT23 0x00800000 |
| Bit 23 set define. | |
| #define | BIT24 0x01000000 |
| Bit 24 set define. | |
| #define | BIT25 0x02000000 |
| Bit 25 set define. | |
| #define | BIT26 0x04000000 |
| Bit 26 set define. | |
| #define | BIT27 0x08000000 |
| Bit 27 set define. | |
| #define | BIT28 0x10000000 |
| Bit 28 set define. | |
| #define | BIT29 0x20000000 |
| Bit 29 set define. | |
| #define | BIT30 0x40000000 |
| Bit 30 set define. | |
| #define | BIT31 0x80000000 |
| Bit 31 set define. | |
| #define ARCH_32_BIT (__INT_MAX__ == 2147483647) |
1 for 32 bit architectures, 0 otherwise
Definition at line 97 of file bitarithm.h.
| #define BIT0 0x00000001 |
Bit 0 set define.
Definition at line 58 of file bitarithm.h.
| #define BIT1 0x00000002 |
Bit 1 set define.
Definition at line 59 of file bitarithm.h.
| #define BIT10 0x00000400 |
Bit 10 set define.
Definition at line 70 of file bitarithm.h.
| #define BIT11 0x00000800 |
Bit 11 set define.
Definition at line 71 of file bitarithm.h.
| #define BIT12 0x00001000 |
Bit 12 set define.
Definition at line 72 of file bitarithm.h.
| #define BIT13 0x00002000 |
Bit 13 set define.
Definition at line 73 of file bitarithm.h.
| #define BIT14 0x00004000 |
Bit 14 set define.
Definition at line 74 of file bitarithm.h.
| #define BIT15 0x00008000 |
Bit 15 set define.
Definition at line 75 of file bitarithm.h.
| #define BIT16 0x00010000 |
Bit 16 set define.
Definition at line 78 of file bitarithm.h.
| #define BIT17 0x00020000 |
Bit 17 set define.
Definition at line 79 of file bitarithm.h.
| #define BIT18 0x00040000 |
Bit 18 set define.
Definition at line 80 of file bitarithm.h.
| #define BIT19 0x00080000 |
Bit 19 set define.
Definition at line 81 of file bitarithm.h.
| #define BIT2 0x00000004 |
Bit 2 set define.
Definition at line 60 of file bitarithm.h.
| #define BIT20 0x00100000 |
Bit 20 set define.
Definition at line 82 of file bitarithm.h.
| #define BIT21 0x00200000 |
Bit 21 set define.
Definition at line 83 of file bitarithm.h.
| #define BIT22 0x00400000 |
Bit 22 set define.
Definition at line 84 of file bitarithm.h.
| #define BIT23 0x00800000 |
Bit 23 set define.
Definition at line 85 of file bitarithm.h.
| #define BIT24 0x01000000 |
Bit 24 set define.
Definition at line 86 of file bitarithm.h.
| #define BIT25 0x02000000 |
Bit 25 set define.
Definition at line 87 of file bitarithm.h.
| #define BIT26 0x04000000 |
Bit 26 set define.
Definition at line 88 of file bitarithm.h.
| #define BIT27 0x08000000 |
Bit 27 set define.
Definition at line 89 of file bitarithm.h.
| #define BIT28 0x10000000 |
Bit 28 set define.
Definition at line 90 of file bitarithm.h.
| #define BIT29 0x20000000 |
Bit 29 set define.
Definition at line 91 of file bitarithm.h.
| #define BIT3 0x00000008 |
Bit 3 set define.
Definition at line 61 of file bitarithm.h.
| #define BIT30 0x40000000 |
Bit 30 set define.
Definition at line 92 of file bitarithm.h.
| #define BIT31 0x80000000 |
Bit 31 set define.
Definition at line 93 of file bitarithm.h.
| #define BIT4 0x00000010 |
Bit 4 set define.
Definition at line 62 of file bitarithm.h.
| #define BIT5 0x00000020 |
Bit 5 set define.
Definition at line 63 of file bitarithm.h.
| #define BIT6 0x00000040 |
Bit 6 set define.
Definition at line 64 of file bitarithm.h.
| #define BIT7 0x00000080 |
Bit 7 set define.
Definition at line 65 of file bitarithm.h.
| #define BIT8 0x00000100 |
Bit 8 set define.
Definition at line 66 of file bitarithm.h.
| #define BIT9 0x00000200 |
Bit 9 set define.
Definition at line 67 of file bitarithm.h.
| #define CLRBIT | ( | val, | |
| bit ) |
Clears bitmask for a bitfield.
| [in] | val | The bitfield |
| [in] | bit | Specifies the bits to be cleared |
Definition at line 51 of file bitarithm.h.
| #define SETBIT | ( | val, | |
| bit ) |
Sets a bitmask for a bitfield.
| [in] | val | The bitfield |
| [in] | bit | Specifies the bits to be set |
Definition at line 40 of file bitarithm.h.
| unsigned bitarith_msb_32bit_no_native_clz | ( | unsigned | v | ) |
Returns the number of the highest '1' bit in a value.
Internal software implementation for 32 bit platforms,
use @see bitarithm_msb in application code.
| [in] | v | Input value |
| unsigned bitarithm_bits_set | ( | unsigned | v | ) |
Returns the number of bits set in a value.
| [in] | v | Input value with platform-dependent word size |
| uint8_t bitarithm_bits_set_u32 | ( | uint32_t | v | ) |
Returns the (uint32_t version) number of bits set in a value.
| [in] | v | Input value with 32 bit size |
|
inlinestatic |
Returns the number of leading 0-bits in x, starting at the most significant bit position.
If x is 0, the result is undefined.
| [in] | x | Input value |
Definition at line 175 of file bitarithm.h.
|
inlinestatic |
Returns the number of the lowest '1' bit in a value.
| [in] | v | Input value - must be unequal to '0', otherwise the function will produce an infinite loop |
Definition at line 205 of file bitarithm.h.
|
inlinestatic |
Returns the number of the highest '1' bit in a value.
| [in] | v | Input value |
Source: http://graphics.stanford.edu/~seander/bithacks.html#IntegerLogObvious
Definition at line 152 of file bitarithm.h.
|
inlinestatic |
Used for iterating over the bits in state.
Returns the index of a set bit in state, returns state with that bit cleared.
state must not be zero.| [in] | state | Bit Map with at least one bit set |
| [out] | index | Index of the first set bit. Must be initialized with 0 before the first call to this function, must not be modified between subsequent calls. |
Definition at line 253 of file bitarithm.h.