求余VS求模--C语言中表述

之前看帖子,发现许多时候基本上大家都把求模和求余混为一谈了。但实际上二者的概念是有区别的

 

1. 求余

在C语言中,求余对应的操作符是%,且a%b求余的最后结果总是与a符号相同,最后的数值为|a|%|b|。

故而 12%256=12;

        -12%256=-12;

        -12%-256 = –12;

        12%-256 =12;

 

2. 求模

在C语言中,对求模操作没有专门对应的运算符,一般用mod代替。且根据网上查阅资料,一般认为求模运算a mod b中,b必须大于0,且求模的结果必须是正数或者0. 个人对这块的理解可能也不是很深刻,我是根据《C++ premier》第三版中文版32页的论述来推断的,该页有如下申明:

      336 mod 256 =80;

      -1 mod 256 =255;

故而求模运算应该是:

      (1)当a 为正数时,求模的结果与求余完全一致;

      (2)当a 为负数时,求模的结果始终为正数,结果为(a+X*b)%b,其中 a+X*b>=0.

posted @ 2013-08-02 17:13  jiayouwyhit  阅读(695)  评论(0编辑  收藏  举报