一、操作符的分类
1. 操作符的分类?
• 算术操作符: + 、- 、* 、/ 、%
• 移位操作符:? << >> ?
• 位操作符:???? & | ^ ?
• 赋值操作符:? = 、+= 、 -= 、 *= 、 /= 、%= 、<<= 、>>= 、&= 、|= 、^= ?
• 单⽬操作符: !、++、--、&、*、+、-、~ 、sizeof、(类型)
• 关系操作符:? > 、>= 、< 、<= 、 == 、 != ?
• 逻辑操作符: && 、||
• 条件操作符: ? :
• 逗号表达式: ,
• 下标引⽤: []
• 函数调⽤: ()
• 结构成员访问: . 、->
二、进制之间的转换
1.其他进制转十进制
我们通常使用“权位展开求和法”,什么意思呢?例如我想要将一个二进制转化为十进制,现有二进制1010,将他展开1 0 1 0,从右往左开始数,第一个乘以2的0次方,第二个乘以二的1次方,所以0*2的0次方+1*2的1次方+0*2的2次方+1*2的3次方,最终的结果为10,以此类推,八进制和十六进制也是一样,这里小编就不一一举例了
2.其他进制转二进制
---十进制转二进制
这里我们一般使用“除2取余法”,将十进制的数一直除2,最后将得到的余数倒着列出来就是这个数的二进制表现形式,就以上面的10来举例,10除以二余0得5,5/2=2……1,2/2=1……0,1/2=0……1,最后倒着列出来1010,就是10的二进制表现形式。
---八进制和十六进制转二进制
这两个的转化有相同之处,所以我放在一起说,首先是八进制,因为0~7都可以用二进制来表示,所以我们只需要将八进制展开,找到对应的二进制然后组合就行了,我这里的说法是为了方便大家理解,并不是专业的说法,我来举个例子,17把他展开就是1和 7 ,1对应的二进制是001,7对应的二进制是111,所以17的二进制是111001,注意这里的17是八进制而不是十进制,十六进制也是一样的,不过十六进制要转化成四位,也就是这里的1要对应成0001,7对应0111,组合就是01110001。
三、原码,反码,补码
整数的2进制表⽰⽅法有三种,即原码、反码和补码。
有符号整数的三种表⽰⽅法均有符号位和数值位两部分,2进制序列中,最⾼位的1位是被当做符号
位,剩余的都是数值位。
符号位都是⽤0表⽰“正”,⽤1表⽰“负”。?
正整数的原、反、补码都相同。
负整数的三种表⽰⽅法各不相同。
原码:直接将数值按照正负数的形式翻译成⼆进制得到的就是原码。
反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。
补码:反码加1得到补码
注意:从补码变回原码有两种途径,一是原路返回,二十取反加1
四、移位操作符
1.左移操作符
批注:其实这里和十进制转二进制也有一定的关系,想了解的可以自己去问一下ai
2.右移操作符
向右移动一位,往左边补,这里有两种补法,一般是负数就补1,正数就补0,第二种就是只补0,一般看编译器,正常是第一种
注意:操作数只能是整数
五、位操作符
下面我直接用代码给大家解释
1.按位与(&)
2.按位或
三.按位异或
4.按位取反
六、单目操作符
单⽬操作符有这些:
!、++、--、&、*、+、-、~ 、sizeof、(类型)
七、逗号表达式
逗号表达式,就是⽤逗号隔开的多个表达式。
逗号表达式,从左向右依次执⾏。整个表达式的结果是最后⼀个表达式的结果。
八、下标访问和函数调用操作符
下标引⽤操作符[ ]
操作数:⼀个数组名+⼀个索引值(下标) 例如arr[1],arr是数组名,1是下标
函数调用操作符()
接受⼀个或者多个操作数:第⼀个操作数是函数名,剩余的操作数就是传递给函数的参数。
九、结构体访问操作符
十、操作符的运算优先级
注意:我这里只给大家说一下常见的,罕见的遇到了就去查表,千万不要想着背
运算符的优先级顺序很多,下⾯是部分运算符的优先级顺序(按照优先级从⾼到低排列),建议⼤概
记住这些操作符的优先级就⾏,其他操作符在使⽤的时候查看下⾯表格就可以了。
• 圆括号( () )
• ⾃增运算符( ++ ),⾃减运算符( -- )
• 单⽬运算符( + 和 - )
• 乘法( * ),除法( / )
• 加法( + ),减法( - )
• 关系运算符( < 、 > 等)
• 赋值运算符( = )
到这里c语言中的操作符基本都介绍了,至于怎么运用小编过一两天后会再次编写,这里只介绍操作符和他的作用,例题会写到下一篇博客