helos1/memory/test_fillbits.c
2021-10-10 14:11:45 +08:00

39 lines
743 B
C

#include <stdio.h>
#include <stdint.h>
static inline uint64_t fillBits(int begin, int last) {
if (last == 63)
return ~((1ull << begin) - 1ull);
if (begin == 0)
return (1ull << (last + 1ull)) - 1ull;
return (~((1ull << begin) - 1ull)) & ((1ull << (last + 1ull)) - 1ull);
}
void printit(int a, int b) {
printf("[%d,%d] = %08lx\n", a, b, fillBits(a, b));
}
int main() {
printit(0, 63);
printit(1, 63);
printit(2, 63);
printit(3, 63);
printit(4, 63);
printit(5, 63);
printit(6, 63);
printit(7, 63);
printit(8, 63);
printit(9, 63);
printit(10, 63);
printit(7, 62);
printit(8, 61);
printit(9, 60);
printit(10, 59);
printit(10, 58);
printit(10, 57);
printit(10, 56);
printit(10, 55);
printit(10, 54);
printit(4, 4);
}