From 789169d70d24ff2c1c9804f0149d0508de6dfcfa Mon Sep 17 00:00:00 2001 From: Enrique Date: Mon, 6 Jan 2025 00:50:11 +0100 Subject: First upload --- bit/bit.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100755 bit/bit.c (limited to 'bit/bit.c') diff --git a/bit/bit.c b/bit/bit.c new file mode 100755 index 0000000..a4924a0 --- /dev/null +++ b/bit/bit.c @@ -0,0 +1,54 @@ +#include "bit.h" + + +u64 flp2(u64 x){ + x |= (x >> 1); + x |= (x >> 2); + x |= (x >> 4); + x |= (x >> 8); + x |= (x >> 16); + x |= (x >> 32); + return x - (x >> 1); +} + +u32 flp2_32(u32 x){ + x |= (x >> 1); + x |= (x >> 2); + x |= (x >> 4); + x |= (x >> 8); + x |= (x >> 16); + return x - (x >> 1); +} + +u64 clp2(u64 x){ + x -= 1; + x |= (x >> 1); + x |= (x >> 2); + x |= (x >> 4); + x |= (x >> 8); + x |= (x >> 16); + x |= (x >> 32); + return x + 1; +} + +u32 clp2_32(u32 x){ + x -= 1; + x |= (x >> 1); + x |= (x >> 2); + x |= (x >> 4); + x |= (x >> 8); + x |= (x >> 16); + return x + 1; +} + +void _bitstofile(void const * const ptr, size_t const size, FILE *fp){ + unsigned char *b = (unsigned char*)ptr; + for(int i = size-1; i >= 0; i--){ + for(int j = 7; j >= 0; j--){ + unsigned char byte = ((b[i] >> j) & 1) ? '1' : '0'; + fputc(byte, fp); + } + if(i != 0) fputc(' ', fp); + } +} + -- cgit v1.2.3