前言
在C++编程中,数学运算是非常基础和常用的功能。C++提供了多种数学运算符和函数,用于执行基本的数学计算,如加减乘除、取模运算以及位运算等。
一、加减乘除四则运算
C++中的基本算术运算符包括加法(+)、减法(-)、乘法(*)、除法(/)。这些运算符可以直接应用于整数和浮点数。
#include <iostream> int main() { int a = 10; int b = 5; float result; // 加法 result = a + b; std::cout << "a + b = " << result << std::endl; // 减法 result = a - b; std::cout << "a - b = " << result << std::endl; // 乘法 result = a * b; std::cout << "a * b = " << result << std::endl; // 除法 result = static_cast<float>(a) / b; // 注意,整数除法会丢失小数部分 std::cout << "a / b = " << result << std::endl; return 0;
}
二、取模运算
取模运算符(%)用于计算两个数相除后的余数。
例如: 17 % 5 = 2 17\%5 = 2 17%5=2
#include <iostream> int main() { int a = 10; int b = 3; // 取模运算 int remainder = a % b; std::cout << "a % b = " << remainder << std::endl; return 0;
}
三、位运算
位运算符用于直接操作整数的二进制位。常见的位运算符包括按位与(&)、按位或(|)、按位异或(^)、按位非(~)、左移(<<)、右移(>>)。
#include <iostream> int main() { int a = 60; // 二进制:0011 1100 int b = 13; // 二进制:0000 1101 // 按位与 int andResult = a & b; // 结果:0000 1100,即12 std::cout << "a & b = " << andResult << std::endl; // 按位或 int orResult = a | b; // 结果:0011 1101,即61 std::cout << "a | b = " << orResult << std::endl; // 按位异或 int xorResult = a ^ b; // 结果:0011 0001,即49 std::cout << "a ^ b = " << xorResult << std::endl; // 按位非(通常用于单个数) int notResult = ~a; // 结果:1100 0011,即-61(取决于系统,可能显示为其他值) std::cout << "~a = " << notResult << std::endl; // 左移 int leftShiftResult = a << 2; // 结果:1111 0000,即240 std::cout << "a << 2 = " << leftShiftResult << std::endl; // 右移 int rightShiftResult = a >> 2; // 结果:0000 1111,即15 std::cout << "a >> 2 = " << rightShiftResult << std::endl; return 0;
}
三、常用的数学运算和技巧
运算符 | 描述 | 示例代码 | 结果 |
---|---|---|---|
+ | 加法 | int sum = a + b; | a + b |
- | 减法 | int difference = a - b; | a - b |
* | 乘法 | int product = a * b; | a * b |
/ | 除法 | float quotient = static_cast<float>(a) / b; | a / b |
% | 取模 | int remainder = a % b; | a % b |
& | 按位与 | int bitwiseAnd = a & b; | a & b |
` | ` | 按位或 | `int bitwiseOr = a |
^ | 按位异或 | int bitwiseXor = a ^ b; | a ^ b |
~ | 按位非 | int bitwiseNot = ~a; | ~a |
<< | 左移 | int leftShift = a << 2; | a << 2 |
>> | 右移 | int rightShift = a >> 2; | a >> 2 |
位运算技巧
技巧 | 描述 | 示例代码 | 结果 |
---|---|---|---|
清除最低位 | 清除一个整数的最低位 | int clearLowestBit = a & (a - 1); | a & (a - 1) |
设置最低位 | 设置一个整数的最低位为1 | `int setLowestBit = a | 1;` |
切换最低位 | 切换一个整数的最低位 | int toggleLowestBit = a ^ 1; | a ^ 1 |
检查最低位 | 检查一个整数的最低位是否为1 | bool isLowestBitSet = a & 1; | a & 1 |
查找最低位的1 | 查找一个整数中最低位的1的位置 | int findLowestOneBit = a & (-a); | a & (-a) |
真心给大家推荐由我主讲的性价比超高的《算法基础课》,想要学习更多ACM/蓝桥杯/CSP/NOIP算法竞赛知识,无论你是想要竞赛拿奖的大学生、想要在笔试面试中脱颖而出、或者是对计算机编程感兴趣的小朋友,都可以学习,一定不要错过!点此了解:https://www.starrycoding.com/course/1
适用对象广泛
内容紧贴考纲,每节课约1.5小时高密度知识
广受好评,学习氛围浓厚,平等互助,拒绝歧视与绑架
视频、习题、文档,想学就学
没错,在学习算法的时候你甚至可以看V。
最最最最最最最最重要的是,由于课程的准备、录制、平台(前后端和评测机)的开发、推广都是由我一人完成,所以成本压的非常非常低,算法基础课仅售39元。
欢迎加入StarryCoding官方用户Q群:746470220(官网www.starrycoding.com)
悄悄说:StarryCoding平台还有算法中级课(可以自行了解)。