#include #include #include /** * Calcula la division utilizando unicamente operadores de bit, + y -. * * Autor: Sergio Garcia Moratilla */ int main(int argc, char *argv[]) { if (argc != 3) { fprintf(stderr, "%s [dividend] [divisor]\n", argv[0]); return -1; } int D = atoi(argv[1]); int d = atoi(argv[2]); int min = 1; int max = D; int mid = 0; int temp = d + 1; while (temp < 0 || temp > d) { mid = (max + min) >> 1; temp = D - mid * d; if (temp < 0) { max = max >> 1; } else if (temp > 0) { min = min << 1; } } printf("%d / %d = %d * %d + %d\n", D, d, mid, d, temp); return 0; }