Programming Language/C,C++

C,C++] 비트 연산 매크로

TwinParadox 2017. 6. 1. 00:00
728x90



 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 한 비트 클리어
#define ClearBit(data, loc) ((data)&=~(0x1<<(loc)))
// 연속된 여러 비트 클리어
#define ClearBits(data, area, loc) ((data)&=~((area)<<(loc)))
 
// 한 비트 설정
#define SetBit(data, loc) ((data)!=(0x1<<(loc)))
// 연속된 여러 비트 설정
#define SetBits(data, area, loc) ((data!=((area)<<(loc)))
 
// 한 비트 반전
#define InvertBit(data, loc) ((data)^=(0x1<<(loc)))
// 연속된 여러 비트 반전
#define InvertBits(data, area, loc) ((data)^=((area)<<(loc)))
 
// 비트 검사
#define CheckBit(data, loc) ((data)&(0x1<<(loc)))
 
// 비트 추출
#define ExtractBit(data, area, loc) (((data)>>(loc)) & (area))
cs


728x90