#define half_rounded(x) (((x) + ((x) < 0 ? 0 : 1)) / 2) #include #include int main(int argc, char **argv) { int num, times; int i; int r, shift; if (argc < 3) { printf("Usage: %s \n"); return -1; } num = atoi(argv[1]); times = atoi(argv[2]); r = num; shift = num; for (i = 0; i < times; i++) { int rr = half_rounded(r); printf("%d. half_round(%d) == %d :: %d >> 1 = %d\n", i+1, r, rr, shift, shift >> 1); r = rr; shift >>= 1; } return 0; }