嵌入式C语言之运算符--学习笔记3

运算符

1、算数操作运算符 +、-、*、/、%

加法:A+B, AB最好是同类型

乘除:乘法在很多CPU中并不支持,乘除法能不用就不用,可能会使执行变差

求模/求余数: n%m=res[0~(m-1)]

求模应用场景:

  • 取一个范围的数:
    • 给一个任意数,得到一个100以内的数
  • 得到一个m进制的一个个位数
  • 得到一个循环数据结构的下标
2、逻辑运算

返回结果:非0(真)或0(假)

1、||、&&

A||B /= B||A 原因(A若为真则不会执行B 预判断)

A&&B /= B&&A

2、>, >=, < ,<=
3、! 逻辑取反

对比位运算中取反操作 ~a

4、? : 问好冒号表达式

if else

3、位运算 **
1、移位 <<, >> 乘除法尽量用2^n
  • 左移:乘法 相当于乘以2,二进制下的以为

    • ​ m<<n; m*2^n
    • int a = b*32 ====> b<<5
    • 数据和数字 都可以用左移做乘法,左移最右补0
      • -1 : 10000001(第一位符号位)=>11111110(全部取反)=>11111111(要加1)
  • 右移:除法 除以2

    • 最左位和符号变量有关,正数0负数1
    • while(a){ a>>!; } 如果a为负数那永远不可能为0
2、&,| 与,或

完成逐位取或屏蔽

  • 与&:

    • 屏蔽: A&0—>0 清零器 clr

      • int a =1234;
        a & 0xff000; //相当于屏蔽低8bit,取出高8bit
        
    • 取出:A&1–>A

  • 或|:

    • 保留:A|0===A
    • 设置为高电平/设置器 set:A|1===1

例:设置一个资源的bit5为高电平,其他位不变:(bit5为第六位)

int a;

a=a|100000;---->a|(0x1<<5);=====>a|(0x1<<n);: 对a的第n位设置为高电平

清除第五位: 要保证只有第五位为0其余都是0,不能用十进制与

a=a&(~(0x1<<n));

3、^异或、~取反
  • 异或^: 相同为假,不同为真

    • 应用:用在算法进行加密解密,工程上用的比较少;交换两个变量的值

      • a=a^b;
        b=a^b;
        a=a^b;
        
  • 取反~:

    • ~0xf0—>0x0f

思考:想把456bit设置为101?

4、赋值运算

前面所有的符号都不具备更新能力;在后面加上=就具备自更新

5、内存访问符号
  • ():
    • 限制符:最优先的加括号
    • 函数访问符号 fun();
  • []
    • 内存访问的ID符号
  • {}
    • 函数体的限制符
    • 结构体、共用体
  • ->地址访问、. 变量访问 对于连续空间的访问方法
  • &、*
    • &后是数字是位运算,如果是变量名是取地址
    • *p:指针;跟数字: 乘法
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值