一、单片机机 中怎样实现字节位操作:
1、ANSIC中,一般采用“读-修改-写”的方法实现单个位的位操作,通过与0“与”操作,将某一位清0。如使i变量的b0位为0,实现方法为i=i&0xfe。通过与1“或”操作,将某一位置1。如使i变量的b0位为1,实现方法为i=i|0x01。通过与1“异或”操作,将某一位取反。如使i变量的b0位取反,实现方法为i=i^0x01。 2 、通过位域的方法实现位操作 标准C提供了一种基于结构体的数据结构--位域(BitField),位域就是把一个存储单元中的二进制划分为几个不同的区域。并说明每个区域的位数。每一个域有一个域名,允许在程序中按域名进行操作,位域的定义格式如下: struct位域结构名{ 位域列表 }; 位域列表格式为:类型说明符 位域名:位域长度如: struct k{ unsigned int a:1 unsigned int :2 unsigned int b:3 unsigned int :0 //空域 }k1; 说明: 1)各位依次从低位到高位排列,排满一个存储单元,按地址接着排下一单元; 2)位域可以无域名,但不能被引用,如第二域,这时其只用来填充或调整位置; 3)第四行称空域,目的是将目前存储单元的剩余部分分为一个域,且填充0。 位域的引用很简单,如: k1.a=1; //置k1的b0位为1 k