34 #define BYTE_ONES_2(n) (n), (n) + 1, (n) + 1, (n) + 2 35 #define BYTE_ONES_4(n) BYTE_ONES_2(n), BYTE_ONES_2((n) + 1), BYTE_ONES_2((n) + 1), BYTE_ONES_2((n) + 2) 36 #define BYTE_ONES_6(n) BYTE_ONES_4(n), BYTE_ONES_4((n) + 1), BYTE_ONES_4((n) + 1), BYTE_ONES_4((n) + 2) 37 #define BYTE_ONES_8(n) BYTE_ONES_6(n), BYTE_ONES_6((n) + 1), BYTE_ONES_6((n) + 1), BYTE_ONES_6((n) + 2) 42 #define BYTE_ZEROS_2(n) 8 - (n), 8 - (n) - 1, 8 - (n) - 1, 8 - (n) - 2 43 #define BYTE_ZEROS_4(n) BYTE_ZEROS_2(n), BYTE_ZEROS_2((n) + 1), BYTE_ZEROS_2((n) + 1), BYTE_ZEROS_2((n) + 2) 44 #define BYTE_ZEROS_6(n) BYTE_ZEROS_4(n), BYTE_ZEROS_4((n) + 1), BYTE_ZEROS_4((n) + 1), BYTE_ZEROS_4((n) + 2) 45 #define BYTE_ZEROS_8(n) BYTE_ZEROS_6(n), BYTE_ZEROS_6((n) + 1), BYTE_ZEROS_6((n) + 1), BYTE_ZEROS_6((n) + 2) 140 assert (off >= 0 && off < 8);
141 return (i & (((UINT8) 1) << off)) != 0;
147 assert (off >= 0 && off < 8);
148 i |= ((UINT8) 1) << off;
155 assert (off >= 0 && off < 8);
156 i &= ~(((UINT8) 1) << off);
165 return i | ((((UINT8) 1) << n) - 1);
271 assert (off >= 0 && off < 16);
272 return (i & (((UINT16) 1) << off)) != 0;
278 assert (off >= 0 && off < 16);
279 i |= ((UINT16) 1) << off;
286 assert (off >= 0 && off < 16);
287 i &= ~(((UINT16) 1) << off);
296 return i | ((((UINT16) 1) << n) - 1);
307 i = i - ((i >> 1) & 0x55555555);
308 i = (i & 0x33333333) + ((i >> 2) & 0x33333333);
309 return (
int) ((((i + (i >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24);
331 #pragma warning(disable:4146) 335 #pragma warning(default:4146) 418 assert (off >= 0 && off < 32);
419 return (i & (((UINT32) 1) << off)) != 0;
425 assert (off >= 0 && off < 32);
426 i |= ((UINT32) 1) << off;
433 assert (off >= 0 && off < 32);
434 i &= ~(((UINT32) 1) << off);
443 return i | ((((UINT32) 1) << n) - 1);
454 i = i - ((i >> 1) & 0x5555555555555555);
455 i = (i & 0x3333333333333333) + ((i >> 2) & 0x3333333333333333);
456 return (
int) ((((i + (i >> 4)) & 0x0F0F0F0F0F0F0F0F) * 0x0101010101010101) >> 56);
478 #pragma warning(disable:4146) 482 #pragma warning(default:4146) 485 if (i & 0x00000000FFFFFFFF)
489 if (i & 0x0000FFFF0000FFFF)
493 if (i & 0x00FF00FF00FF00FF)
497 if (i & 0x0F0F0F0F0F0F0F0F)
501 if (i & 0x3333333333333333)
505 if (i & 0x5555555555555555)
528 if (i & 0xFFFFFFFF00000000)
533 if (i & 0x00000000FFFF0000)
538 if (i & 0x000000000000FF00)
543 if (i & 0x00000000000000F0)
548 if (i & 0x000000000000000C)
553 if (i & 0x0000000000000002)
558 if (i & 0x0000000000000001)
574 assert (off >= 0 && off < 64);
575 return (i & (((UINT64) 1) << off)) != 0;
581 assert (off >= 0 && off < 64);
582 i |= ((UINT64) 1) << off;
589 assert (off >= 0 && off < 64);
590 i &= ~(((UINT64) 1) << off);
599 return i | ((((UINT64) 1) << n) - 1);
int bit64_count_trailing_zeros(UINT64 i)
int bit16_count_leading_zeros(UINT16 i)
int bit8_count_trailing_ones(UINT8 i)
UINT16 bit16_set_trailing_bits(UINT16 i, int n)
int bit16_count_zeros(UINT16 i)
int bit64_count_leading_zeros(UINT64 i)
int bit64_count_trailing_ones(UINT64 i)
int bit8_count_trailing_zeros(UINT8 i)
int bit32_count_zeros(UINT32 i)
UINT8 bit8_clear(UINT8 i, int off)
int bit16_count_trailing_ones(UINT16 i)
bool bit8_is_set(UINT8 i, int off)
UINT32 bit32_set_trailing_bits(UINT32 i, int n)
int bit8_count_leading_ones(UINT8 i)
int bit16_count_trailing_zeros(UINT16 i)
UINT8 bit8_set_trailing_bits(UINT8 i, int n)
int bit8_count_zeros(UINT8 i)
UINT32 bit32_set(UINT32 i, int off)
UINT16 bit16_set(UINT16 i, int off)
UINT64 bit64_set_trailing_bits(UINT64 i, int n)
int bit32_count_trailing_zeros(UINT32 i)
UINT64 bit64_clear(UINT64 i, int off)
int bit8_count_leading_zeros(UINT8 i)
int bit16_count_leading_ones(UINT16 i)
UINT8 bit8_set(UINT8 i, int off)
int bit32_count_leading_zeros(UINT32 i)
UINT64 bit64_set(UINT64 i, int off)
int bit32_count_leading_ones(UINT32 i)
bool bit32_is_set(UINT32 i, int off)
UINT16 bit16_clear(UINT16 i, int off)
int bit16_count_ones(UINT16 i)
int bit32_count_ones(UINT32 i)
UINT32 bit32_clear(UINT32 i, int off)
int bit64_count_zeros(UINT64 i)
int bit64_count_leading_ones(UINT64 i)
int bit32_count_trailing_ones(UINT32 i)
int bit64_count_ones(UINT64 i)
int bit8_count_ones(UINT8 i)
static const int byte_ones[256]
bool bit16_is_set(UINT16 i, int off)
bool bit64_is_set(UINT64 i, int off)
static const int byte_zeros[256]