`
kenby
  • 浏览: 722324 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

实现两个整数的除法,不能用除号和乘号

阅读更多

对于两个整数a和b, 求a/b,可以从1开始枚举结果result,找到满足 result *b <= a的最大result即为所求,

这是一种可行的算法,但效率比较低,事实上,枚举result的时候,可以成倍的增加result,找到满足 result * b <= a的

最大result,然后把a减去 result * b, 接下来对余数a再次迭代,直到余数a比b小。

比如计算29/5的过程为:

(1)

a = 29, b = 5

找出满足b*i <= a的最大i, 依次计算:

b*1 = 5, b*2 = 10, b*4 = 20

所以最大的i = 4, 然后把a减去b*4,result加上4

a = a - b*4 = 9

result = result + 4 = 4

转步骤(2)

 

(2)

a = 9, b = 5

找出满足b*i <= a的最大i, 依次计算:

b*1 = 5

所以最大的i = 1, 然后把a减去b*1,result加上1

a = a - b*1 = 4

result = result + 1 = 5

转步骤(3)

 

(3)

a = 4, b = 5, a < b 算法停止,最后余数为a = 4, 结果为result = 5

 

 

#include <stdio.h>
#include <stdlib.h>

#define MASK 0x80000000

int div_int(int x, int y)
{
	unsigned int flag, a, b, result, i;

	flag = (x & MASK) ^ (y & MASK);	/* 判断符号位 */
	a = x = abs(x);
	b = y = abs(y);
	result = 0;

	if (b == 0) {
		printf("浮点数例外\n");
		exit(0);
	}

	for (; a >= b; a -= b, b = y) {
		for (i = 1; b <= a; b <<= 1, i <<= 1);
		b >>= 1; i >>= 1;
		result += i;
	}

	if (flag) {
		return -result;
	}
	return result;
}

int main()
{
	int a = -64;
	int b = 4;

	printf("%d\n", div_int(a,b));
	return 0;
}
分享到:
评论

相关推荐

    小学六年级上册数学分数除法一PPT学习教案.pptx

    通过这些例子,学生能更直观地理解分数除法与整数除法的意义相同,都是已知积和其中一个因数,求另一个因数的运算。 在PPT的后续部分,还包含了智力转盘练习,解方程的环节,以及一些常见的错误分析,如分数乘除法...

    人教六年级数学上分数除法分数除法例PPT学习教案.pptx

    这里体现了分数除以整数的基本原则:被除数不变,将除法转换为乘法,即将除号变为乘号,然后将整数变为它的倒数进行计算。因此,6÷2等价于6×(1/2),结果就是3。 接下来,我们讨论分数除以分数的情况。在比较小明...

    人教版五年级上册数学第三单元小数除法 整理和复习(2).pdf

    - 了解小数除法与整数除法的不同之处,比如如何处理小数点的位置,以及商的变化规则。 知识点二:运算符号的应用 在复习资料中提到的“○”符号代表不同的运算符号,学生需要根据具体情况选择加号(+)、减号(-)...

    分数除法教学课件.ppt

    分数除法是数学中的一个重要概念,特别是在小学高年级和初中的数学学习中。这份北师大版五年级数学下册的课件详细介绍了分数除法的相关知识,包括其原理、计算方法以及应用。 首先,我们要了解分数除法的基本定义:...

    五年级下册分数除法一课件PPT学习教案.pptx

    比如1÷4 = 1×(1/4),1÷5 = 1×(1/5),1÷3 = 1×(1/3),这些例子让学生直观地发现分数除法与乘法的关系,即除号可以转换为乘号,而除数则变为它的倒数。 课件中的计算练习部分,如38/4 ÷ 2、18/7 ÷ 8等,旨在...

    整数的运算python.docx

    - **取模运算**:使用百分号(%)获取整数除法的余数。例如,`a = 7`, `b = 3`, `c = a % b`,`print(c)`将输出1。 - **幂运算**:使用两个乘号(**)进行指数运算。例如,`a = 2`, `b = 3`, `c = a ** b`,`print...

    分数乘除法计算题专项练习(共5份)..docx

    - 当进行分数除法时,要注意将除号转换为乘号,同时除数变为其倒数。 3. **解方程**: - 在解含有分数的方程时,通常需要找到公分母,然后通过移项、合并同类项等步骤求解未知数。 - 需要注意,解方程时要保持...

    人教六年级数学上册一个数除以分数PPT课件.pptx

    《分数除法的理解与应用》 分数除法是小学数学中的一个重要知识点,尤其在六年级...通过以上讲解和练习,学生不仅能够掌握分数除法的理论知识,还能提高解决实际问题的能力,从而更好地理解和运用这一重要数学概念。

    北京课改版六年级上册数学期末复习全册单元知识点总结.doc

    - **分数除以整数**:分数除法的意义与整数除法相同,是已知两个因数的积和其中一个因数,求另一个因数。带分数除以整数需先转换为假分数。 - **一个数除以分数**:转换为乘以分数的倒数,保持被除数不变,除号...

    计算器运算加减乘除法德运算啊哈哈

    对于非整数倍的乘法和除法,可以使用快速乘法算法(如Karatsuba乘法、Toom-Cook乘法等)和除法算法(如长除法、近似算法等)。在软件层面,编程语言提供了内置的乘法和除法运算符,底层由编译器优化后转化为机器指令...

    一个数除以分数PPT课件2.ppt

    核心知识点是,分数除法可以转换为分数乘法,具体步骤包括:保持被除数不变,将除号变为乘号,然后将除数转换为其倒数。需要注意的是,这里的除数不能为0,因为0没有倒数。例如,5/6除以12/5可以写成5/6×5/12。 ...

    新人教六年级数学上册一个数除以分数例PPT学习教案.pptx

    在这个过程中,学生们发现了一个规律:对于分数除法,被除数不变,除号变为乘号,而除数要变成它的倒数。例如,32/2除以1/12等同于32/2乘以12/1,这样就可以得到结果。同样的方法应用于小红的速度计算中,即125/6...

    六年级上册数学北京课改版知识要点.pdf

    1. 分数除法的意义:与整数除法相同,是已知两个因数的积和其中一个因数求另一个因数。 2. 分数除以整数:带分数除以整数,先转化为假分数,再按分数除法计算。 3. 一个数除以分数:等于乘以分数的倒数,保持被除数...

    专题讲座2021-2022年人教版小学数学五年级上期末复习大纲(全).doc

    - 含字母式子的书写:省略乘号,但加减除号和乘号不能省略。 - 方程定义:含有未知数的等式,解方程是找到使等式成立的未知数的值。 - 等式性质:等式两边加减相同数或乘除相同非零数,等式仍成立。 - 方程与...

    2.2分数除法的意义及运算法则-人教版(五四制)六年级数学上册基础知识讲义.docx

    简单来说,分数除法的意义在于,当我们已知两个数的乘积以及其中一个因数时,我们需要找出另一个因数。 例如,如果知道两个因数的乘积为\(A\),其中一个因数为\(B\),那么通过除法可以求得另一个因数\(C\),即\(A ...

    人教六年级数学上册第页一个数除以分数PPT学习教案.pptx

    4. **小红与小明比较速度**:小红用1/3小时走了5/6公里,比较两个速度时,同样转换为乘法形式,即5/6 ÷ 1/3 = 5/6 × 3 = 5/2,表示小红每小时走5/2公里。通过比较,可以发现小红走得更快。 5. **分数除法的规律**...

    新建MicrosoftWord文档(1).doc

    倒数是指两个数相乘结果为1的两个数,例如1/2和2/1是倒数。求一个数的倒数就是将分子和分母互换位置。分数乘法的法则指出,分数乘以分数是将分子相乘,分母也相乘。 接着,课程进入主题——分数除法。通过实际操作...

    六年级数学上册 专项复习 数与代数 新人教版

    7. 分数除法:分数除法等价于乘以除数的倒数,保持被除数不变,除号变为乘号,除数变成其倒数。 8. 四则混合运算:遵循与整数运算相同的顺序,即先乘除后加减,同级运算从左到右。 9. 解决实际问题: - 利用线段...

    小学五年级数学上册知识点归纳汇总-.pdf

    在字母表达式中,乘号可以省略,但加号、减号和除号以及数与数之间的乘号不能省略。 总的来说,这些知识点旨在帮助五年级学生建立基本的数学概念和技能,为他们未来的学习打下坚实的基础。通过理解和掌握这些内容,...

    人教版六年级上册数学时一个数除以分数例PPT教案.pptx

    这是一个简单的整数除法问题,但为了引入分数除法,我们可以将时间单位转换为分数,比如1小时的1/2小时,即0.5小时。因此,同样的问题可以表示为6÷(2/1),这里的2/1代表1小时。根据除以分数的规则,被除数不变,...

Global site tag (gtag.js) - Google Analytics