嵌入式C语言之位操作详解


1.位操作符:
    位操作直接将两个操作数按照二进制对应进行操作;
    例:0xaa&(位与)0xf0=0xa0;
    逻辑操作是  两个操作数整体来操作;
    例:0xaa&&(逻辑与)0xf0=1;
    
    嵌入式的移位操作针对于无符号数:左移时右侧补0,右移时左侧补0,相当于逻辑移位
    对于有符号数:左移右侧补0,右移左侧补符号位(正数补0,负数补1),相当于算术移位。

2.寄存器:
    
    寄存器的在设定特定位时不能影响其他位。
    当改变寄存器特定位时:不直接写操作,先读出寄存器整体原来的值,在这个基础上修改我们要修改的地方,然后将修改后的值整体写入寄存器  即:读--改--写
    
    结合位取反可以将寄存器的特定位进行改变。
    当想将指定位置0是,可以利用位与操作,其他位均为f,置0位为0,即可
    
    要置1用位或|  要清零用位与&  要取反用~
    << >>用来构建特殊二进制数
    
    用移位来获取一个特定位为1的二进制数。
    例:#include <stdio.h>
        int main(void)
        {
            unsigned int a;
     
            a=((0x1f<<3)|(0x7<<23));  //输出0x0380 00f8  位或操作可以将两部分结合
            printf("0x%x.\n",a);
            return 0;     
        }
        
    用取反可以获取一个特定位为0的二进制数。

宏:宏体必须有一个括号把内容包括进去
    
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值