*C语言 —— 操作符详解(纯干货版)

目录

一、操作符的分类

二、进制之间转换

① 2进制转10进制 

② 10进制转2进制

③ 2进制转8进制

④ 2进制转16进制

三、原码、反码、补码

四、移位操作符

① << 左移操作符

② >> 右移操作符

五、位操作符

① &     //按位与

② |      //按位或

③ ^     //按位异或

④ ~     //按位取反

练习

六、单目操作符

七、逗号表达式

八、下标访问符、函数调用

① [ ]   下标应用操作符

② ( )   函数调用操作符

九、结构成员访问操作符

1. 结构(结构体)

① 结构的声明

② 结构体变量的定义

③ 结构体变量的初始化

2. 结构成员访问操作符

① 结构体成员的直接访问

② 结构体成员的间接访问 

十、操作符的属性

① 优先级

② 结合性

十一、表达式求值

1. 整型提升

2. 算术转换


一、操作符的分类

⚪ 算术操作符:+,-,*,/,&

⚪ 移位操作符(二进制):<<,>>

⚪ 位操作符(二进制):&,|,^

⚪ 赋值操作符:=,+=,-=,*=,/=,%=,<<=,>>=,&=,|=,^=

⚪ 单目操作符:!,++,--,&,*,+,-,~,sizeof

⚪ 关系操作符:>,>=,<,<=,==,!=

⚪ 逻辑操作符:&&,||

⚪ 条件操作符:?:

⚪ 逗号表达式:,

⚪ 下标应用:[ ]

⚪ 函数调用:( )

⚪ 结构成员访问:. ,->

二、进制之间转换

其实我们说的2进制、8进制、10进制、16进制都是数值的不同表示形式。

二进制

⚪ 2进制中满2进1

⚪ 2进制的数字每一位都是0~1的数字组成

十进制

⚪ 10进制中满10进1

⚪ 10进制的数字每一位都是0~9的数字组成

① 2进制转10进制 

例:10进制的123

10进制的每一位是有权重的,从右往左依次是个位、十位、百位...,对应权重分别是10^0,10^1,10^2...

例:2进制的1101

2进制和10进制是类似的,只不过2进制的每一位权重,从右往左是2^0,2^1,2^2...

因此,我们可以得知:要得到十进制的值时候,只需要用当前进制数字的每一位乘以它所对应的权重相加即可。

② 10进制转2进制

例:10进制的125

③ 2进制转8进制

例:2进制的01101011

④ 2进制转16进制

如果想要十进制转换为八进制或者十六进制,只需要将十进制先转化为二进制,再将二进制分别转换即可。

三、原码、反码、补码

整数的二进制表示方法有三种,即:原码、反码、补码。(小数无原反补概念)

有符号整数的三种表示方法均有符号位、数值位,2进制序列中,最高位的一位是被当做符号位,剩余的都是数值位。无符号整数只有数值位。

符号位都是用"0"表示正,用"1"表示负。

正整数的原、反、补码都相同。

负整数的三种表示方法各不相同。

原码:直接将数值按照正/负数的形式翻译成二进制得到的就是原码。

反码:符号位不变,其它位依次按位取反。

补码:反码 +1。

注:补码得到原码操作:取反,+1。


对于整型来说:数据存放在内存中其实存放的是补码。

为什么?

在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值