C语言——操作符

目录

前言

分类

二进制和进制转换

进制

进制转换

二进制转十进制

十进制转二进制

二进制转八进制

二进制转十六进制

原码、反码、补码

移位操作符

<< 左移操作符

>>右移操作符

位操作符:&、|、^、~

&  按位与

​编辑

|  按位或

^ 按位异或

​编辑

~按位取反

应用

不能创建临时变量(第三个变量),实现两个整数的交换。

编写代码实现:统计⼀个整数存储在内存中的⼆进制中1的个数

找出单身狗

单⽬操作符

逗号表达式

下标访问[]、函数调⽤()

[ ] 下标引⽤操作符

函数调⽤操作符 ()

结构成员访问操作符

结构体

结构的声明

结构体变量的定义和初始化

结构成员访问操作符

结构体成员的直接访问

结构体成员的间接访问

操作符的属性:优先级、结合性


前言

    在前面,我们见到了 +, -, * ,/ , < , > , =这些符号,其实它们的名字叫做操作符。按照功能的不同我们可以对它进行一个简单的分类

分类

算术操作符: + - * / %
移位操作符: << >>
位操作符: &, | ,^ ,~
赋值操作符: = += -= *= /= %= <<= >>= &= |= ^=
单⽬操作符: !、 ++ -- & * + - ~ 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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值