操作符+进制基础知识

1. 操作符的分类

在这里插入图片描述
在这里插入图片描述

二进制和进制转换

在这里插入图片描述

在这里插入图片描述
进制就是数字不同的表达形式而已

十转二

在这里插入图片描述
余数从下往上写

熟悉之后直接凑就好了,没必要一下一下算

二转八

在这里插入图片描述
每三个二进制位,换算成一个八进制

注意:一个数字的开头是0,没被认为是八进制数字
在这里插入图片描述

二转十六

在这里插入图片描述
每四个二进制位,换算成一个十六进制

注意:十六进制表示在前面加0x

原码、反码、补码

在这里插入图片描述
在这里插入图片描述
概念搞清楚

负数所以三个不相同,正数知道一个就全知道了

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

在这里插入图片描述
** 算一个数,就是占4个字节,32个bit位**
在这里插入图片描述

移位操作符——移动的是二进制位

左移

在这里插入图片描述
在这里插入图片描述

像这样移动完,a,b的值到底是多少呢?

首先需要把a的二进制写出来

记住一个整数的二进制是4个字节 32个bit位

所以0000000000000000000000000000000110

因为6是正数,所以原码反码补码相同

向左移动一位,左边抛弃,右边补0
在这里插入图片描述
所以b的二进制末尾就是1100=12

在这里插入图片描述
左移一位有乘2的效果

负数也一样

在这里插入图片描述
在这里插入图片描述

右移操作符

到底是算术右移还是逻辑右移,取决于编译器,大部分都是算术右移

在这里插入图片描述
可以记一下
在这里插入图片描述
在这里插入图片描述
如果是逻辑右移,就变成负数了,因为是左边补0

常见的编译器都是算术右移,所以这里就不展示效果了

如果是算术右移,直接在左边补符号位,不会改变正负

重点:对于两种移位操作符来说两边必须是整数且移动的位数不得为负

在这里插入图片描述
这是个特例,-1右移后还是-1

大部分情况下,右移有除2的效果

复合起来写

在这里插入图片描述

位操作符

在这里插入图片描述
区分一下
在这里插入图片描述

1.按位与

在这里插入图片描述
上下两个数进行与运算,有0就是0,全1才是1

在这里插入图片描述
得到补码后通过取反+1,得到原码才能确定结果
在这里插入图片描述
把两个数的补码写出来,做相应的运算就好

2.按位或同理

3.按位异或

在这里插入图片描述

还是补码之间的运算,看到一个数先写原码,转化成补码

异或:相同为0,相异为1

在这里插入图片描述

4.按位取反

我们之前接触过的!,就是逻辑取反

~:就是对这个数的二进制所有取反

在这里插入图片描述
操作数必须是整数

一道面试题

在这里插入图片描述
思路1:
在这里插入图片描述
在这里插入图片描述
这样写右移i次,就会让每一位都到最后一位与1进行与运算,来判断它是不是1

对于操作符的运用在嵌入式中很常见

一个算法
在这里插入图片描述

有几个一,这个算法就运行几次,就去掉几个一

在这里插入图片描述
-1的原码就是32个1,所以根据这个算法得出了有多少个1

这个算法不容易想到

练习题

在这里插入图片描述
只要把第五位的位置或上1,其他位置或上0就可以

按位或

在这里插入图片描述
在这里插入图片描述
转化为1后,就只有第5个与上0,其他与上1,然后按位取反,再1<<4,我嘞个豆啊

在这里插入图片描述

逗号表达式

在这里插入图片描述

每个表达式依次运算

整个表达式的结果就是最后一个表达式的结果

在这里插入图片描述

在这里插入图片描述

优先级

在这里插入图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值