c++教程3:基本运算符的使用
编程的重点在于处理信息 ,并进行运算,既然是运算了那肯定少不了运算符,先列几个C++里的基础运算符:
1、=(赋值,表示将 “=” 右侧内容传递给左侧)
2、+(左侧内容加上右侧内容)
3、-(左侧内容减去右侧内容)
4、* (同 “×\times×”)
5、/(同 “÷\div÷”)
6、%(同 mod, 表示左侧的数除以右侧的数的余数)
7、++(自增,变量数值 + 1,分为前置 ++、后置 ++)
8、–(自减,变量数值 - 1,分为前置 --、后置 --)
9、>(大于,左侧数值大于右侧返回 true,否则 false)
10、<(小于,左侧数值小于右侧返回 true,否则 false)
11、>=(大于等于,同 “(\ge)”,左侧≥右侧返回 true)
12、<=(小于等于,同 “(\le)”,左侧≤右侧返回 true)
13、==(判断相等,左右数值一致返回 true;不要和赋值 = 混淆)
14、!=(不等于,同 “(\ne)”,左右数值不相等返回 true)
15、&(按位与,二进制对应位同时为 1 结果才为 1)
16、|(按位或,二进制对应位任意一个为 1 结果即为 1)
17、^(按位异或,二进制对应位数值不同则结果为 1,相同为 0)
18、~(按位取反,单目运算符,二进制所有 0 变 1、1 变 0)
19、<<(左移,二进制整体向左移动指定位数,低位补 0)
20、>>(右移,二进制整体向右移动指定位数;有符号数高位补符号位)
21、&&(逻辑与,两边条件同时成立结果为 true)
22、||(逻辑或,两边条件任意一个成立结果为 true)
23、!(逻辑非,取反;条件成立则返回 false,不成立返回 true)
这里科普一下二进制:
一、二进制基础概念
二进制(Binary)是计算机内部数据表示和运算的基础,它只使用两个数字:0 和 1。每个二进制位称为一个比特(bit),8个比特组成一个字节(byte)。
1. 二进制与十进制的对应关系
- 十进制:逢十进一,使用数字 0-9
- 二进制:逢二进一,使用数字 0 和 1
2. 二进制数的表示
二进制数通常以0b或0B开头(C++14及以上支持),例如:
0b1010表示十进制 100b1111表示十进制 15
3. 位权与转换
二进制每一位的权重是 2 的幂次方(从右向左,从 0 开始):
- 第0位(最右边):权重 2⁰ = 1
- 第1位:权重 2¹ = 2
- 第2位:权重 2² = 4
- 第3位:权重 2³ = 8
- 以此类推…
例如:0b1101= 1×2³ + 1×2² + 0×2¹ + 1×2⁰ = 8 + 4 + 0 + 1 = 13
4. 二进制的基本运算
- 与运算(&):两位都为1时结果为1
- 或运算(|):两位至少一个为1时结果为1
- 异或运算(^):两位不同时结果为1
- 取反运算(~):0变1,1变0
注意:C++ 中整数默认是有符号类型,取反后会改变数值正负,日常使用频率较低。
四、二进制左移、右移运算(快速乘除)
移位运算属于极致高效的运算,底层直接位移二进制位,效率高于乘除法,可等价替代 2 的倍数乘除运算。
1. 左移 <<
运算规则:将二进制整体向左移动指定位数,右侧空出的低位统一补 0。
数学等价:左移 n 位,等价于×2n\times 2^n×2n。
示例:十进制 3(二进制 11)左移 1 位
3<<1=6(二进制 11→110)3 << 1 = 6 \quad (\text{二进制} \ 11 \rightarrow 110)3<<1=6(二进制11→110)
示例:十进制 3 左移 2 位
3<<2=12(二进制 11→1100)3 << 2 = 12 \quad (\text{二进制} \ 11 \rightarrow 1100)3<<2=12(二进制11→1100)
2. 右移 >>
运算规则:将二进制整体向右移动指定位数,左侧空出的高位根据数据类型补位。
数学等价:右移 n 位,等价于÷2n\div 2^n÷2n(向下取整)。
有符号数:高位补符号位(正数补0,负数补1);
补位规则:
无符号数:高位统一补0。
示例:十进制 12(二进制 1100)右移 1 位
12>>1=6(二进制 1100→110)12 >> 1 = 6 \quad (\text{二进制} \ 1100 \rightarrow 110)12>>1=6(二进制1100→110)
示例:十进制 12 右移 2 位
12>>2=3(二进制 1100→11)12 >> 2 = 3 \quad (\text{二进制} \ 1100 \rightarrow 11)12>>2=3(二进制1100→11)
多谢浏览,请看到的朋友们留个赞~
