diff --git a/getbits.c b/getbits.c new file mode 100644 --- /dev/null +++ b/getbits.c @@ -0,0 +1,44 @@ +/** + * getbits.c + * Copyright (C) 2010 Markus Broeker + * + */ +#include +#include +#include + +#define BITS 64 + +char *getbits (unsigned long long what) +{ + static char byte[BITS + 1]; + + short i = BITS; + + memset (byte, '0', BITS); + + while (what > 0) { + byte[--i] = (what % 2) ? '1' : '0'; + what >>= 1; + } + byte[BITS] = '\0'; + + return byte; +} + +int main (void) +{ + unsigned int i; + for (i = 1; i < 16; i++) + printf ("%s\n", getbits (i)); + + printf ("%s\n", getbits (USHRT_MAX)); + printf ("%s\n", getbits (UINT_MAX)); + printf ("%s\n", getbits (ULONG_MAX)); + +#ifdef ULLONG_MAX + printf ("%s\n", getbits (ULLONG_MAX)); +#endif + + return 0; +}