关于c++中的取模运算

    首先,说一个整形的赋值问题,对于unsigned类型,比如8位的unsigned char,其取值范围从0-255(包括255),如果赋给超出这个范围的值,编译器就会取该值对256求模后的值。

    其次,关于求模和取余,如果操作数都是正整数,则一样,若有负数,则另当别论。


对于无符号整数,模运算可以转换为多个减运算(例:336对256求模,336%256)

对于有符号整数且为负,模运算可以转换为加运算。

例如:把-1赋给8位的unsigned char,那么结果是255,运算过程如下:

取模运算对于负数应加上被除数的整数倍,使得结果大于或等于0之后再进行运算。如-1+256=255然后255%256=255.


C++模运算本质上是求两个数相除的余数。在数学上,对于两个整数a和b(b 不为 0),模运算可以表示为:a = q * b + r,其中q是商,r是余数(即的结果),并且0 ≤ |r| < |b| 。 使用方法上,操作必须对两个整型变量进行,不能有小数。以下是使用示例: ```cpp #include <iostream> int main() { int a = 5; int b = 2; std::cout << a % b; // 输出为 1 return 0; } ``` 在这个例子中,5 除以 2 商为 2,余数为 1,所以结果为 1。 在使用 C++ 模运算时,有以下注意事项: - 当 0 参与运算时,若 0 作为除数,此时编译不通过;若 0 作为被除数,对非零数,得到的结果总为 0。例如: ```cpp #include <iostream> int main() { int c = 2; int d = 0; // 0 作为被除数 std::cout << d % c; // 输出 0 return 0; } ``` - 时不能有小数参与,两个小数不能进行模运算,整数和小数也不能进行模运算。例如: ```cpp #include <iostream> int main() { double a = 3.14; double b = 1.1; int c = 2; // 以下这些操作都会产生编译错误 std::cout << a % c; // Invalid operands to binary expression ('double' and 'int') std::cout << c % a; // Invalid operands to binary expression ('int' and 'double') std::cout << a % b; // Invalid operands to binary expression ('double' and 'double') return 0; } ``` - 除法的被除数不能为0,若在模运算里将 0 作为除数,编译会不通过。 - 两个整数相除依然是整数,小数部分舍弃,但模运算本身是基于整数的求余操作,与整数相除结果的整规则相关但关注点不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值