C语言计算负数取余是如何计算的
发布时间:2025-05-14 22:49:40 发布人:远客网络
一、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博客,全文地址请点击: