目录
前言
在前面,我们见到了 +, -, * ,/ , < , > , =这些符号,其实它们的名字叫做操作符。按照功能的不同我们可以对它进行一个简单的分类
分类
•
算术操作符:
+
、
-
、
*
、
/
、
%
•
移位操作符:
<< >>
•
位操作符:
&, | ,^ ,~
•
赋值操作符:
=
、
+=
、
-=
、
*=
、
/=
、
%=
、
<<=
、
>>=
、
&=
、
|=
、
^=
•
单⽬操作符: !、
++
、
--
、
&
、
*
、
+
、
-
、
~
、
sizeof
、
(
类型
)
•
关系操作符:
>
、
>=
、
<
、
<=
、
==
、
!=
•
逻辑操作符:
&&
、
||
•
条件操作符:
? :
•
逗号表达式:
,
•
下标引⽤:
[]
•
函数调⽤:
()
•
结构成员访问:
.
、
->
这里面的部分操作符与二进制有关,所以我们需要先了解二进制以及进制转换的一些知识,开始咯~
二进制和进制转换
进制
我们经常听到的2进制、8进制、10进制、16进制是数值的不同表⽰形式。
以我们最熟悉的十进制为例:
•
10进制中满10进1
•
10进制的数字每⼀位都是0~9的数字组成
二进制:
•
2进制中满2进1
•
2进制的数字每⼀位都是0~1的数字组成
八进制:
•
8进制中满8进1
•
8进制的数字每⼀位都是0~7的数字组成
十六进制:
•
16进制中满16进1
•
为了避免混淆16进制数字每⼀位是0~9, a~f 的

后面的a~f表示十六进制的时候可以是大写,也可以是小写。
进制转换
从前面我们可以看出,进制的原理是差不多的,接下来我们就来学习进制转换。
进制的每⼀位是有权重的。
举个例子:十进制的123
10进制的数字从右向左是个位、⼗位、百位....,分别每⼀位的权重是
10^0 , 10^1 , 10^2...

其他的进制也是类似的,比如二进制
每⼀位的权重,从右向左是:
2^0 , 2^1, 2^2 ...
二进制转十进制
二进制转十进制,我们只需要把二进制每一位乘以它对应的权重就可以了。
比如二进制1011
十进制转二进制
我们只需要将十进制数不断地除二,直到结果为0,每一次得到的余数从下向上写就是转换出的二进制。比如十进制125
二进制转八进制
8进制的数字每⼀位是0~7的,0~7的数字各⾃写成2进制,最多有3个2进制位就足够了。
所以我们可以从2进制序列中右边低位开始向左
每3个2进制位
会换算
⼀个8进制位
,剩余不够3个2进制位的直接换算,也可以在前面加一个0.
比如二进制的11110101--->0365(八进制)
0开头的数字,会被当做8进制,我们把0称为前导符。

二进制转十六进制
与二进制转换为八进制类似,16进制的数字每⼀位是0~9, a~f 的,0~9, a~f的数字,各⾃写成2进制,最多有4个2进制位就⾜够了,所以我们可以从2进制序列中右边低位开始向左每4个2进制位会换算⼀个16进制位,剩余不够4个⼆进制位的直接换算。
比如二进制的11110101---->0xf5(十六进制),16进制表⽰的时候前⾯加0x (前导符)
我们可以在编译器上打印来验证我们的结果是否正确!
将二进制的11110101转换为十进制就是245