嵌入式C++的初步学习

文章目录


#嵌入式C++的学习
##运算符
需要换算成二进制去进行
##(1)与
与无变化,与0与变成0,只有1&1才等于1,其余1&0、0&1、0&0都为0
&& 与 a && b 如果a和b都为真,则结果为真,否则为假。
两个位都是1,结果就是1,否则为0。
2 010
3 011
2 & 3 = 010
##(2)或
与1或变成1,与0或无变化,只有0&0才等于0,其余1&0、0&1、1&1都为1
&& 与 a && b 如果a和b都为真,则结果为真,否则为假。
两个或一个位是1,结果是1,否则为0。
2 010
3 011
2|3 = 011
##(3)位异
两个位不同,结果是1,否则结果为0。
a 010
b 011
a^b = 001
##按位左移
###被操作的数据<<被移位数,左移后右边会空,补0。

a = 2, b = 3 ,c = a <<b
a 010
b 011
c = a<<b = 10000
##按位非
操作一个数,对位取反,0变成1,1变成0
a 010
b 011
c= 1111 1101
## 按位右移
### 被操作的数>>被移位数,右移后左边补0,无符号最左边一位是0,有符号(负号)最左边一位是1
###无符号:
a = 20, b = 3 ,c = a >>b
a = 0001 0100 即向右移3位,后面的数溢出,前面用0补位
c = 0000 0010
c = 2
###有符号:
各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)
***###算数右移:***(比较多)
a = - 20, b = 3 ,c = a >>b
a = 1110 1100 即向右移3位,后面的数溢出,后面用0补位,第一位补1
c = 1001 1101
c = -30
###逻辑右移:
a = - 20, b = 3 ,c = a >>b
a = 1110 1100 即向右移3位,后面的数溢出,后面用1补位
c = 1111 1101
c = -3
所有负数都是按补码来计算的,十进制的结果=源码的补码转化为十进制后+1,再加负号

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值