バイトビットオペレーション
2927 ワード
一、シングルチップマシンでバイトビット操作を実現する方法:
二、ビットドメインの応用:
//1、ビットドメイン方式.まずビットドメインを定義し、typedefstruct_bit_struct { unsigned char bit0 : 1 ; unsigned char bit1 : 1 ; unsigned char bit2 : 1 ; unsigned char bit3 : 1 ; unsigned char bit4 : 1 ; unsigned char bit5 : 1 ; unsigned char bit7 : 1 ; unsigned char bit6 : 1 ; }bit_field;//もう1つのマクロを使用して、操作するビットを指します.#defineLED GET_BITFIELD(PORTB).bit0 #define BUTTON GET_BITFIELD(PINB).bit 7//LED=0、LED=1、LED=0、LED=1など、LED=0、LED=1を直接判断するこの方法は、C 51におけるビット動作と同様である.直接.//2、シフトマクロ方式.主に3つあります.define Set_Bit(val, bitn) (val |=(1< #define Clr_Bit(val, bitn) (val&=~(1< #define Get_Bit(val, bitn) (val&(1
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
k1.b=7; // k1 b3-5 111
, , , 、 。
二、ビットドメインの応用:
//1、ビットドメイン方式.まずビットドメインを定義し、typedefstruct_bit_struct { unsigned char bit0 : 1 ; unsigned char bit1 : 1 ; unsigned char bit2 : 1 ; unsigned char bit3 : 1 ; unsigned char bit4 : 1 ; unsigned char bit5 : 1 ; unsigned char bit7 : 1 ; unsigned char bit6 : 1 ; }bit_field;//もう1つのマクロを使用して、操作するビットを指します.#defineLED GET_BITFIELD(PORTB).bit0 #define BUTTON GET_BITFIELD(PINB).bit 7//LED=0、LED=1、LED=0、LED=1など、LED=0、LED=1を直接判断するこの方法は、C 51におけるビット動作と同様である.直接.//2、シフトマクロ方式.主に3つあります.define Set_Bit(val, bitn) (val |=(1< #define Clr_Bit(val, bitn) (val&=~(1< #define Get_Bit(val, bitn) (val&(1