简单介绍嵌入式C语言中常用的位操作

在嵌入式c语言中,使用位操作程序有很好的可读性。以下就简单介绍以下常用的位操作。
常见的二进制位的变换操作
功能 示例 位运算
去掉最后一位 (101101-->10110) x>>1
在最后加一个0 (101101-->1011010) x<1011011) (x<<1)+1 或 (x<101101) x|1
把最后一位变成0 (101101-->101100) x|1-1
最后一位取反 (101101-->101100) x^1
从右数第k位变成1 (101001-->101101,k=3) x|(1<101001,k=3) x&(~(1<101101,k=3) x^(1<101) x&7
取末k位 (101101-->1101,k=4) x&15
取右数第k位 (1101101-->1,k=4) (x>>(k-1))&1
把末k位变成1 (101001-->101111,k=4) x|(1<100110,k=4) x^(1<100100000) x&(x+1)
把右起第一个0变成1 (100101111->100111111) x|(x+1)
把右边连续的0变成1 (11011000->11011111) x|(x-1)
取右边连续的1 (11011111->11111) (x^(x+1))>>1
去掉右起第一个1的左边 (100101000->1000) x&(-x)
判断第7位是否为1 if(x&0x40){……}
字节读取 (x>>0)&0x000000ff 获取第0个字节
字节读取 (x>>8)&0x000000ff 获取第1个字节
字节读取 (x>>16)&0x000000ff 获取第2个字节
判断奇偶数 if(x&1==1){……}
判断两个数是否异号 int x = -1, y = 2;
bool f = ((x ^ y) < 0); // true
int x = 3, y = 2;
bool f = ((x ^ y) < 0); // false
求2的n次方 1<> 8) | (a << 8);


aigo国民好物高速足容固态硬盘P3000全面满足用户需求
美国科技巨头在智能家居领域的博弈证明了该市场的潜力
主打外形、配色!三星S8“扒光”式现身:要卖6000元
凯文·凯利最新演讲:未来的12个趋势
华为第二季度有望成全球第三大智能手机厂商
简单介绍嵌入式C语言中常用的位操作
旋涂绝缘介质(SOD)是什么?
分享多年来我眼中的Google Cloud,同时表达我在未来对它的期望
能力风暴Oculus5评测 以体现创造力为核心
EI学术会议交流-2021年第二届移动计算、无线通信与网络国际研讨会
可穿戴设备发展遇瓶颈,Intel要“开溜”
贸泽电子开售Molex新款高频射频识别解决方案
特斯拉与三星合作,研发一款全新的5纳米芯片用于全自动驾驶
台基股份募资7亿元投资功率半导体 将引入两大国资背景战投
LTE与雷达系统共存测试
FPGA实现HDMI编解码的设计方案和主要思路
五大趋势保障民用无人机的高速稳定发展
更新iOS 10.3beat5后,不得不面临一个残酷的事实!
安全地联接工业边缘节点
温度继电器的特点及检测方法