#include /* get n bits from position p, numbered from 0 (least significant) and * up. */ unsigned int getbits(unsigned int x, int p, int n) { return (x >> (p + 1 - n)) & ~(~0 << n); } int main(int argc, char **argv) { int x, i; if (argc != 2) { printf("Usage: getbit integer\n"); exit(1); } x = atoi(argv[1]); for (i = 0; i < sizeof (unsigned int) * 8; i ++) { printf("%d", getbits(x, i, 1)); #if 0 printf("%d of %d is %d\n", i, x, getbits(x, i, 1)); #endif } printf("\n^bit 0 ^bit 31\n"); return 0; }