前言
在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平台还有算法中级课(可以自行了解)。



