`
kenby
  • 浏览: 726459 次
  • 性别: 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上的智力转盘练习环节,以及解方程的环节,教师进一步巩固学生的理解。智力转盘上...

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

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

    分数除法教学课件.ppt

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

    整数的运算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

    在这个过程中,学生学会了如何将除号转换为乘号,并将除数变为其倒数,从而加深了对分数除法的理解。 实际的计算练习也是课件的重要组成部分,如计算38/4除以2和18/7除以8等题目。这些练习旨在提高学生的口算能力,...

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

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

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

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

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

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

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

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

    六年级上册数学北京课改版知识要点.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. **分数除法的规律**...

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

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

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

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

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

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

    (中小学教育)一个数除以分数.ppt

    通过对比两个例子,强调了无论被除数还是除数都是不变的,只是除号变为乘号,除数变成其倒数。 课件还引导学生发现并总结规律,即一个数除以一个不等于0的分数,等于乘这个分数的倒数。这是一条基本的分数运算法则...

    二年级脱式计算.doc

    10. **整数除法的整除性**:一个整数被另一个整数除,若余数为零,则称前者能被后者整除。例如49-3×7,49是7的倍数,所以49可以被7整除。 这些练习题旨在巩固和提高二年级学生的基础运算技能,通过不断练习,他们...

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

    在学生的好奇心和求知欲的驱使下,他们自己发现了分数除法的一个核心规律:被除数保持不变,除号变为乘号,而除数则需要取其倒数进行乘法运算。例如,计算32/2除以1/12时,等同于将32/2乘以12/1,结果显而易见。这一...

Global site tag (gtag.js) - Google Analytics