#include const int intsize = sizeof(int) * 8; /* # of bits for an integer value */ void bit_print(int v); main() { int i, n, lbit, rbit, lmask = 1 << (intsize - 1), rmask = 1; printf("\nInput an integer value: "); scanf("%d", &n); printf("\n Input value in binary: "); bit_print(n); for(i = 0; i < (intsize/2); ++i) { lbit = n & lmask; rbit = n & rmask; n = (lbit) ? (n | rmask) : (n & ~rmask); n = (rbit) ? (n | lmask) : (n & ~lmask); lmask = 1 << (intsize - i - 2); /* performs signed arithmetic shift */ rmask <<= 1; } printf("\n Reversed binary value: "); bit_print(n); } void bit_print(int v) { int i, mask = 1 << (intsize - 1); /* mask = 100 ... 0 */ for(i = 1; i <= intsize; ++i) { putchar(((v & mask) == 0) ? '0' : '1'); v <<= 1; if ((i % 8) == 0) putchar(' '); } putchar('\n'); }