Below method is the implementation of binary divide considering both numbers are positive. If subtraction is a concern we can implement that as well using binary operators.
======
-(int)binaryDivide:(int)numerator with:(int)denominator
{
if (numerator ==0 || denominator ==1) {
return numerator;
}
if (denominator ==0) {
#ifdef DEBUG
NSAssert(denominator==0, @"denominator should be greater then 0");
#endif
return INFINITY;
}
// if (numerator <0) {
// numerator = abs(numerator);
// }
int maxBitDenom = [self getMaxBit:denominator];
int maxBitNumerator = [self getMaxBit:numerator];
int msbNumber = [self getMSB:maxBitDenom ofNumber:numerator];
int qoutient = 0;
int subResult = 0;
int remainingBits = maxBitNumerator-maxBitDenom;
if(msbNumber>=denominator){
qoutient |=1;
subResult = msbNumber- denominator;
}
else{
subResult = msbNumber;
}
while(remainingBits>0){
int msbBit = (numerator & (1<<(remainingBits-1)))>0?1:0;
subResult = (subResult <<1) |msbBit;
if(subResult >= denominator){
subResult = subResult-denominator;
qoutient= (qoutient<<1)|1;
}
else{
qoutient = qoutient<<1;
}
remainingBits--;
}
return qoutient;
}
-(int)getMaxBit:(int)inputNumber
{
int maxBit =0;
BOOL isMaxBitSet = NO;
for(int i=0;i>(numbeMaxBit -bits);
}