首页 > 编程知识 正文

c语言取模运算怎么算,c语言如何计算除法

时间:2023-05-06 17:40:11 阅读:238368 作者:487

下面的题目你可以全部都做对么:

3/4=?3%4=?3/-4=?3%-4=?-3/4=?-3%4=?-3/-4=?-3%-4=?

如果你无法全部准确的做出请看下面的解答

除法的取整分类
除法的取整分为三类:向上取整、向下取整、向零取整。
1、向上取整:向+∞方向取最接近精确值的整数。在这种取整方式下,6/5=2 6/(-5)=-1 6/4=2 6/(-3)=-2
2、向下取整:向-∞方向取最接近精确值的整数。在这种取整方式下,6/5=1 6/(-5)=-2 6/4=1 6/(-3)=-2
3、向零取整:向0方向取最接近精确值的整数,就是舍去小数部分,因此又称截断取整。在这种取整方式下,6/5=1 6/(-5)=-1 6/4=1 6/(-3)=-2
C语言使用向零取整方式,知道如何取整,我们就可以知道如何取模了

有符号之间的出具处理例程如下所示:

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <fcntl.h>#include <sys/time.h>#include <assert.h>//int:4//long int :8int main(void){ int i,j,k; int ret; i = 3; j = 4; k = 5; ret = i % j; printf("%s %d %d n",__func__,__LINE__,ret); ret = i % k; printf("%s %d %d n",__func__,__LINE__,ret); ret = k % j; printf("%s %d %d n",__func__,__LINE__,ret); ret = i / j; printf("%s %d %d n",__func__,__LINE__,ret); ret = i / k; printf("%s %d %d n",__func__,__LINE__,ret); ret = k / j; printf("%s %d %d n",__func__,__LINE__,ret); printf("************************** n"); i = 3; j = -4; k = -5; ret = i % j; printf("%s %d %d n",__func__,__LINE__,ret); ret = i % k; printf("%s %d %d n",__func__,__LINE__,ret); ret = i / j; printf("%s %d %d n",__func__,__LINE__,ret); ret = i / k; printf("%s %d %d n",__func__,__LINE__,ret); printf("************************** n"); i = -3; j = 4; k = 5; ret = i % j; printf("%s %d %d n",__func__,__LINE__,ret); ret = i % k; printf("%s %d %d n",__func__,__LINE__,ret); ret = i / j; printf("%s %d %d n",__func__,__LINE__,ret); ret = i / k; printf("%s %d %d n",__func__,__LINE__,ret); printf("************************** n"); i = -3; j = -4; k = -5; ret = i % j; printf("%s %d %d n",__func__,__LINE__,ret); ret = i % k; printf("%s %d %d n",__func__,__LINE__,ret); ret = i / j; printf("%s %d %d n",__func__,__LINE__,ret); ret = i / k; printf("%s %d %d n",__func__,__LINE__,ret); printf("************************** n");return 0;}

结果如图所示:

有符号和无符号之间的处理:

        对于无符号和有符号之间的除法运算,首先会将有符号的数据转换为无符号的数据进行处理,在计算机中负数是用补码表示的,所以需要将负数转换为补码之后进行计算,转换方法可以参考博客https://blog.csdn.net/qq_37600027/article/details/83961882

有符号和无符号数据之间的例程如下所示:

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <fcntl.h>#include <sys/time.h>#include <assert.h>//int:4//long int :8int main(void){ int ret,j,k; unsigned int i; i = 3; j = 4; k = 5; ret = i % j; printf("%s %d %d n",__func__,__LINE__,ret); ret = i % k; printf("%s %d %d n",__func__,__LINE__,ret); ret = k % j; printf("%s %d %d n",__func__,__LINE__,ret); ret = i / j; printf("%s %d %d n",__func__,__LINE__,ret); ret = i / k; printf("%s %d %d n",__func__,__LINE__,ret); ret = k / j; printf("%s %d %d n",__func__,__LINE__,ret); printf("************************** n"); i = 3; j = -4; k = -5; ret = i % j; printf("%s %d %d n",__func__,__LINE__,ret); ret = i % k; printf("%s %d %d n",__func__,__LINE__,ret); ret = i / j; printf("%s %d %d n",__func__,__LINE__,ret); ret = i / k; printf("%s %d %d n",__func__,__LINE__,ret); printf("************************** n"); ret = k % i; printf("%s %d %d n",__func__,__LINE__,ret); ret = k / i; printf("%s %d %d n",__func__,__LINE__,ret); printf("************************** n");return 0;}

程序结果为:

 

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