您当前的位置:首页 > 互联网教程

C语言计算负数取余是如何计算的

发布时间:2025-05-14 22:49:40    发布人:远客网络

C语言计算负数取余是如何计算的

一、C语言计算负数取余是如何计算的

C语言计算负数取余:符号内的被除数决定,就是计算式中的-7,7,-7决定:比如-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语言除法运算符“/”和求余运算符“%”

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

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

二、C语言中负数是怎么计算的啊

C语言计算负数取余:符号内的被除数决定,就是计算式中的-7,7,-7决定:比如-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语言除法运算符“/”和求余运算符“%”

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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