《嵌入式Linux与物联网软件开发——C语言内核深度解析》一2.6 位运算实战演练2
本节书摘来自异步社区《嵌入式Linux与物联网软件开发——C语言内核深度解析》一书中的第2章,第2.6节,作者朱有鹏 , 张先凤,更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.6 位运算实战演练2 2.6.1 用C语言将寄存器a的bit7~bit17中的值加17(其余位不受影响) 分析:第一步:先读出原来的bit7~bit17的值。第二步:在这个值的基础上加17。第三步:将bit7~bit17清零。第四步:将第二步算出来的值写回到bit7~bit17位。 tmp =(a &~(0x7ff<<7)); // 将bit7~ bit17外的其他位清零 tmp >>= 7; // 右移7位得到bit7~ bit17的值 tmp += 17; // 加17 a &= ~(0x7ff<<7); a |= tmp <<7; 2.6.2 用C语言给寄存器a的bit7~bit17赋值937,同时给bit21~bit25赋值17 分析:方法有两种,第一种是第一步bit7~bit17清零,第二步bit21~bit25清零。第二种是,...