1.操作符的分类
算术操作符:+,-,*,/,%
移位操作符:<< >>
位操作符:&,|,^,~
赋值操作符:=,+=,-=,*=,/=,%=,<<=, >>=, &=, | = ,^=
单目操作符(该种操作符的操作数只有一个):!,++,- -,&,*,=, -, ~,sizeof, (类型)
关系操作符:>,>=,<,<=,==(等于,注意单个=是赋值操作符),!=
逻辑操作符:&&(并且),| |(或者)
条件操作符(三目操作符):表达式1?表达式2:表达式3
逗号表达式: 形式为(表达式1,表达式2,表达式3)
下标引用操作符 [ ]
函数调用操作符()
结构体成员访问操作符 .,->
使用这些操作需要二进制及其相关的知识,方便我们理解操作符操作的原理,也有利于我们对数据在计算机中如何存储加深理解
2.二进制和进制转换
在我们生活中经常听到10进制,8进制,2进制,16进制,那么这些进制是什么意思呢?其实这些进制只是数据的不同表现形式。
例如数据15的不同表示形式
15的二进制:1111
15的八进制:17
15的十进制:15
15的十六进制:f
(注:8进制的数值前写0,16进制的数值前写0x)
以10进制,8进制,16进制的形式打印
首先想要了解二进制,从10进制入手
10进制满10进1;
10进制数字有0~9的数字组成
同理
二进制满2进1;
二进制由0,1组成
二进制转10进制
10进制的每位都有权重
如
123
10^2 10^1 10^0
123=1*10^2+2*10^1+3*10^0
同理二进制也有权重
将每位数字乘以对应的权重再相加即可得到十进制的数据
如
1111
1*2^3+1*2^2+1*2^1+1*2^0=15
10进制转二进制
15/2=7……1
7/2=3……1
3/2=1……1
1/2=0……1
将数据除至商为0,再由下往上列举数据
如15二进制即为1111
二进制转8进制和16进制
一位8进制等于3个二进制(2^3=8)
一位16进制等于4个二进制(2^4=16)
16进制
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
如15的16进制为
15/16=0……15
即为F
3.原码,反码,补码
整数的二进制表示方法有3种:原码,反码,补码
整数的原码,反码,补码均相同,
有符号整数表示的三种方法均匀符号位和数值位两部分,二进制序列中,最高位的一位是符号位,其余位是数值位
符号位:0表示正,1表示负
负数的三种表示方法各不同
原码:直接将数值按照正负数的形式翻译成二进制得到的就是原码
反码:符号位不变,其余位依次取反(1->0,0->1)得到的就是反码
补码:反码+1得到的就是补码
例如:
例如
反码:10000000000000000000000000001001(符号位不变)
补码:10000000000000000000000000001010
对于整型来说数据存放内存中其实存放的是补码
4.移位操作符
<<左移操作符
>>右移操作符
移位操作符的操作数只能是整数,不要移动负数位
4.1
<<左移操作符
规则:左边抛弃,右边补0
例如
<<1
00000000000000000000000000001010
00000000000000000000000000010100
效果
4.2
>>右移操作符
算术右移:左边补0,右边抛弃
逻辑右移:左边补原来的符号位,右边抛弃
效果
5.位操作符(&,|,^)-操作数必须是整数
&(按位与)
有0为0,同时为1才是1
使用补码进行&
|(按位或)
有1为1,同时为0才是0
使用补码进行|
效果(可进行减法运算)
^(按位异或)
使用补码进行^
相同为0,相异为1
效果(可进行减法运算)
6.单目操作符
单目操作符有:!,++,- -,&,*,=, -, ~,sizeof, (类型)
单目操作符的特点是操作数只有一个,还有&(取地址操作符)和*(解引用操作符)具体内容看指针内容
此代码只是指针的简单应用!