반응형
프로그램을 하다 보면 통신이나 외부 장치와의 연결 과정에서 비트 연산을 하여 처리해야 할 경우들이 많이 발생합니다.
인터넷을 돌아다니며 하나하나 찾기에는 시간이 많이 부족하여 지금까지 모아 온 자료들을 공유드립니다.
소스코드
데이터 반전
만약 [ 0xFF, 0x00 ]이 입력되면 [ 0x00 ,0xFF ]로 앞뒤 자리를 바꿔주는 역할입니다.
public static void Swap<T>(ref T _i, ref T _j) where T : struct
{
T temp;
temp = _i;
_i = _j;
_j = temp;
}
비트 체크
data 안에 몇 번째 비트가 On 되어 있는지 확인하는 함수입니다.
public static bool Check_Bit(double _data, int loc)
{
int val = (0x1 << loc);
return ((int)_data & val) == val;
}
비트 켜기
입력된 data에서 특정 위치의 한 비트만을 On 시키는 함수입니다.
public static int Set_Bit(double _data, int _loc)
{
return ((int)_data | (byte)(0x01 << _loc));
}
비트 끄기
data 안에 특정 위치의 비트를 Off 하는 함수입니다.
public static int Clear_Bit(double _data, int loc)
{
return ((int)_data & ~(0x01 << loc));
}
비트 연속 끄기
data 안에서 시작 번지(loc)에서 개수(area) 데이터들을 Off 하는 함수입니다.
public static int Clear_Bits(double _data, int _area, int _loc)
{
return ((int)_data & ~(_area << _loc));
}
비트 연속 켜기
data 안에서 시작 번지(loc)에서 개수(area) 데이터들을 On 하는 함수입니다.
public static int Set_Bit(double _data, int _area, int _loc)
{
return ((int)_data | ~(_area << _loc));
}
비트 연속 반전
data 안에서 특정 위치(loc) 비트를 반전(On→Off / Off→On) 하는 함수입니다.
public static int Invert_Bit(double _data, int _loc)
{
return ((int)_data ^ (0x01 << _loc));
}
비트 영역 연속 끄기
data 안에서 시작 위치(loc)에서 개수(area) 만큼 비트들을 반전(On→Off / Off→On) 하는 함수입니다.
public static int Invert_Bit(double _data, int _area, int _loc)
{
return ((int)_data ^ (_area << _loc));
}
비트 영역 확인
data 안에서 시작 위치(loc)에서 개수(area)만큼의 비트들이 On/Off 상태인지 확인합니다.
public static int Extract_Bit(double _data, int _area, int _loc)
{
return ((int)_data >> _loc) & _area;
}
데이터 반전
data의 값을 반전시킵니다 (0 xFFFF → 0x0000)
public static int Invert_Data(int _data)
{
return ~_data;
}
반응형
'프로그래밍 > C Sharp' 카테고리의 다른 글
[ C# ] LS 산전 PLC 이더넷 통신-헤더 프레임 만들기 (0) | 2021.12.07 |
---|---|
[ C# ] 미쯔비시 QnA 시리즈 PLC와 PC 이더넷 통신하기 (3) | 2021.11.23 |
[ C# ] 키보드 기능키 ( Num Lock, Caps Lock , Scroll Lock ) 확인하기 (0) | 2021.11.16 |
[ C# ] 키보드 보조키 (Ctrl , Shift , Alt)키 상태 확인하기 (0) | 2021.11.16 |
[ C# ] 듀얼 모니터에서 다른 모니터에 화면 띄우기 (0) | 2021.11.16 |
댓글