c++教程3:基本运算符的使用

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. 二进制数的表示
二进制数通常以0b0B开头(C++14及以上支持),例如:

  • 0b1010表示十进制 10
  • 0b1111表示十进制 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(二进制11110)
示例:十进制 3 左移 2 位
3<<2=12(二进制 11→1100)3 << 2 = 12 \quad (\text{二进制} \ 11 \rightarrow 1100)3<<2=12(二进制111100)
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(二进制1100110)
示例:十进制 12 右移 2 位
12>>2=3(二进制 1100→11)12 >> 2 = 3 \quad (\text{二进制} \ 1100 \rightarrow 11)12>>2=3(二进制110011)

多谢浏览,请看到的朋友们留个赞~