#include <stdio.h>
int main(void)
{
int x, y, result = 0, i, cnt = 0;
unsigned mask;
printf("두 수 : ");
scanf("%d %d", &x, &y);
// 곱셈
for (result = 0, mask = 0x00000001, i = 0; i < 32; i++, mask <<= 1) {
if (y & mask) result += (x << i); // 해당 자리의 2^n만큼 결과값을 좌로 이동
}
printf("%d * %d = %d\n", x, y, result);
result = x;
// 나눗셈
for (mask = y, i = 1; mask <= result; mask <<= 1, i <<= 1);
// 피제수를 나눌 수 있는 가장 큰 제수의 2^n을 찾는 과정
// mask >>= 1; // 피제수보다 제수가 한 단계 더 커졌으므로 다시 한단계 작거나 같게
// i >>= 1;
while (y <= result) { // 피제수가 제수보다 작으면 그만함(소수점 이하 잘라버림)
if (result >= mask) {
result -= mask; // 나머지를 구해 다시 피제수로 사용
cnt += i; // 구해진 몫을 더함
}
mask >>= 1;
i >>= 1;
}
printf("%d / %d = %d\n", x, y, cnt); // 최종 얻은 몫
return 0;
}