您的位置:

c语言除以负数,c语言除以负数等于什么

本文目录一览:

请问C语言是怎么计算负数取余的?

C语言计算负数取余:符号内的被除数决定,就是计算式中的-7,7,-7决定:比如-7%5=-2;

7%-5=2;

-7%-5=-2;

负数取余的原理:

任何一个整数n都可以表示成n=k*q+r其中0=|r||q|这里的r就是n除以q的余数,即r==n%q例如:-9=(-2)*4+(-1)则-9除以4的余数为-1。

求余:取整除后的余数。

求模:基本意义和求余相同,不过要求a%b中的b不是负数。

扩展资料

C语言除法运算符“/”和求余运算符“%”

除法运算符“/”。二元运算符,具有左结合性。参与运算的量均为整型时,结果为整型,舍去小数。如果运算量中有一个为实型,结果为双精度实型。

例如:

5/2=2,1/2=0

5/2.0=2.5

求余运算符“%”,二元运算符,具有左结合性。参与运算的量均为整型。求余运算的结果等于两个数相除后的余数。

c语言中负数除法和右移的区别

对于无符号整数,除法和右移效果是一样的;

对于有符号的正整数,除法和右移的效果也是一样的;

对于有符号的负整数,除法和右移的效果是不一样的;

比如:-3/2 = -1;-31是多少呢?

我们可以将其按照8位二进制展开-3的8位二进制是1000 0011,负数在计算机中是以补码的形式存储的,所以还需要将其转换成补码1000 0011

转换成反码 1111 1100(最高位符号位不动), 再加1转换成补码1111 1101

接着将其右移1位,由于是有符号负整数,所以最高位补1,变为1111 1110

接着将其还原成原码,1111 1110减1变反码1111 1101,接着反码取反变原码1000 0010,转换成十进制是-2,

也就是说-31得到的是-2

其实这是因为 除法是向0取整,而右移位是向负取整

-3/2=-1.5=-1(向0取整),-31=-1.5=-2(向负取整);

如果我们需要右移达到的效果和除法一样,可以采取下列公式:

假设除数为2^N,负数x的除法可以用以下方法来代替:(x + 2^N - 1) N

本文来自 西门一雪 的CSDN 博客 ,全文地址请点击:

C语言 带有负数的除法运算

-30/8是整型除法,结果为整型,而你用%f占位符输出整型,这是不正确的。如果要用%f,必须输出一个float型或double型。改为(double)-30/8。

C语言问题,正数除负数结果是正还是负的?

这和C语言中数据的储存有关.C语言中数据的储存空间是有限的,比如说整型数据,占四个字节,从而整型数是有范围的,从-2^31+1到2^31,正负号根据二进制数第一位决定.并且运算是以二进制来进行的,当两个数加和超出范围时,自动舍去超出的位数(二进制),所以当然可能两个很大的正数相加等于负数咯.

c语言中,正数除负数是正数还是负数

分子分母的符号如果不同,除出来一定是负数因为:

A/B假设A是负数B是正数=(-1)*|A|/B,而|A|/B是正数除以正数,得到正数,乘以-1得到负数,同理如果B是负数