版权声明:本文为博主原创文章如有需要,请注明转载地址:/morixinguan若是侵权用于商业用途,请联系博主否则将追究责任 /morixinguan/article/details/
关于这个概念,是我从工作中学习的虽然在读书嘚时候就应该要掌握,但是在开发中这项技能尤其重要。我是做嵌入式开发的在嵌入式开发过程中,如何对数据操作必然是不可缺少嘚问题接下来,我们来看一个例子:
这个例子就是将0x10这个无符号整型数进行高低位分离结果就是high = 1 , low = 0 ;大家可以拿笔算一下是不是这樣一个结果。下次要是开发中要你将一个数的高地位分离出来用这种最普通的算法便可以实现。
接下来我们来看第二个例子:
}C语言Φ的位操作在嵌入式开发中也是非常常见的,清位置位,异或左移,右移逻辑取反,按位取反这些概念希望想从事这方面开发的技术人员务必精通它,因为太常见了我们来分析一下这个例子,首先这道题其实就是将一个16进制的高低8位进行分离offset = 0x1234 ,将这个数右移8位然后与上0xff便取到了这个数的高8位12,将offset与上0xff便取到了这个数的低8位,这样就达到了分离高地位的目的这种方法比较简单,不理解的把它記住就行了,下次直接用
接下来,我们来看第三个例子:
这个例子就是将数组传进来的1,2,3,4,5,6,7,8,9,10每两个合并成一个字节合并出来的结果就是05,,这样嘚算法其实非常节省空间,相当于把10个数变成5个数然后存到数组里面去这样的方法当时我也是第一次知道,就是在写SPI_FLASH写操作时由于汇編代码中的数据是高低位存储的,于是我就想到了这个方法将数据写到了汇编函数里去。这种方法有点类似上面的一种只不过多了个數组,可以慢慢的理解一下或者找Debug调试一下出结果就知道是为什么了。