首页 > 编程知识 正文

整数除法的运算定律,整数除法的方法是什么

时间:2023-05-04 15:08:01 阅读:160633 作者:4294

资源来源于leetcode 29—— dividetwointegers。 主题说明如下。

在这个问题上,让我们把两个数相除。 而且,不能进行乘法、除法、剩余操作。 比较直接的方法是在被除数上减去除数直到变成0。 这个方法有极端的情况。 例如,如果除数为1,被除数接近INT_MAX,则复杂度为o(n )。 除此之外,也可以用其他神器位操作Bit Operation。 其理念是,如果被除数大于等于除数,则进行循环,使变量t等于除数,t的两倍小于等于被除数。 将t扩大两倍,p扩大两倍,更新结果和被除数m。 我们知道其中一个整数表示为以2的幂为底的一组基的线性组合,即num=a020a121a222.an2n。 这个问题需要注意测试用例的全面性。 例如,如果被除数为-2147483648,而int范围内的除数为-1,则结果必须返回到INT_MAX,超出int范围。 然后根据被除数和除数的正负来决定返回值的正负。 在这里,使用龙龙完成所有的计算,最后在返回值上加上符号就可以了。

代码示例: intdivide(intdividend,int divisor ) longlongm=ABS ) (longlong ) long ) dividend ); 长整型n=ABS ()长整型(divisor ); 长整型结果=0; if(mn ) { return 0; }if(n==0) { return INT_MAX; }while(m=n ) { long long t=n,p=1; //再次进入循环时,重置t和p值while (m=) ) t=1; p=1; (} m -=t; result =p; (if ) (dividend0) ^ ) ^ (divisor 0) ) /异或运算result=- result; } return result INT_MAX? int_max:(int ) result; 现在让我们回顾一下异或运算:

异或运算符(^ )。

参加运算的2个数据通过二进制位进行异或运算。

运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;

也就是说,对于参与运算的两个对象,如果两个对应的位“不同”,则该位的结果为1,否则为0。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。