int pow(int num1, int num2)//대충 보고 알수 있음
{
int i;
int result = 1;
for(i = 0 ; i < num2 ; i++)
{
result *= num1;
}
return result;
}
//원리 : 2 * 9 = 2 * (2 ^ 3 + 2 ^ 0) = 2 * (2^3) + 2*(2^0)
//곱할 수(9)를 2로 인수분해 함
int mul(int num1, int num2)
{
int i = 0;//루프 변수
int result = 0;//결과
while(num2 != 0)
{
//2로 인수 분해 - (1)2의 몇승을 해야num2의 초과직전인지 체크
while(pow(2,i) < num2)
++;
result += (num1 << i);//그 수만큼 num1의 시프트값을 결과값에 더한다
num2 -= (int)pow(2,i);//그리고 2의 i승을 num2에서 뺀다
i = 0;//루프 초기화
}//num2가 모두 분해되어 0이 될때까지 루프
return result;//결과값 리턴
}
int div(int num1, int num2)
{
int i = 0;//루프 변수
int result = 0;//결과
while(num2 != 0)
{
//2로 인수 분해 - (1)2의 몇승을 해야num2의 초과직전인지 체크
while(pow(2,i) < num2)
i++;
result += (num1 >> i);//그 수만큼 num1의 시프트값을 결과값에 더한다
num2 -= (int)pow(2,i);//그리고 2의 i승을 num2에서 뺀다
i = 0;//루프 초기화
}//num2가 모두 분해되어 0이 될때까지 루프
return result;//결과값 리턴
}