# HG changeset patch # User Markus Bröker # Date 1275428456 -7200 # Node ID f4b424b93e452b8076966a250a27b431c20c1de8 # Parent d82830a449a9b854c6ac995641cc5fcca9928cdb getbits added committer: Markus Bröker diff --git a/Makefile b/Makefile --- a/Makefile +++ b/Makefile @@ -74,7 +74,7 @@ TARGET += cppdatabase TARGET += pipe TARGET += compliteral - +TARGET += getbits .SUFFIXES: .c .cc .asm @@ -338,6 +338,10 @@ @echo Linking $<... @$(CC) -Wall -O2 -g -ggdb $(LDFLAGS) $< -o $@ +getbits: getbits.o + @echo Linking $<... + @$(CC) -Wall -O2 -g -ggdb $(LDFLAGS) $< -o $@ + .PHONY: beauty clean uninstall 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; +}