[嵌入式 C 语言] 按位与、或、异或、取反、左移、右移 (含代码实现)

参考:嵌入式:按位与、或、异或、取反操作小结_或操作-优快云博客

总结 

Role Usage
按位于& 判断状态 if (data & 0x3F)
判断是否是某一状态 if((data & targetState) == targetState)
清零 data = data & 0x00;
判断奇偶性 if(i & 1)
        printf("%d%s\n", i, "为奇数");
    else
        printf("%d%s\n", i, "为偶数");
按位或 | 将一个数中的某个位置1 data = data | 0x66;
调换并合并高八位与低八位 combinedData = (lowByte << 8) | highByte;
按位异或^ 将一个数中指定的位翻转 

(与0异或保留原值,与1异或翻转)

data = data ^ 0xC3;

交换两数 (直接使用位操作来实现,免去第三方变量的引入)
取反 ~ 将最低位清零 data &= ~1
变换符号(正变负、负变正) data = ~data + 1;
求整数的绝对值 (将int右移31位,则int的最高位变成了最低位,这一位就是符号位)
左移 << 取某一位     int blueMask = 1 << 4;     // 蓝灯
    int whiteMask = 1 << 5;    // 白灯
右移 >> 取高八位 highByte = combinedData >> 8;

一、按位与 &

  • 有0则0,全1则1
  • 1010 & 0011 =  0010
  • 0xef & 0xfe = 0xee ( 0x1110
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值