C语言操作符详解(1)

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, (类型)

单目操作符的特点是操作数只有一个,还有&(取地址操作符)和*(解引用操作符)具体内容看指针内容

此代码只是指针的简单应用!

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值