HOWTO · Csharp
C#에서 비트마스크 사용
이 기사에서는 C#에서 비트마스크를 사용하는 방법에 대해 알아봅니다.
이 페이지의 내용
이 게시물에서는 C#에서 비트마스크를 사용하는 방법을 살펴봅니다. 가장 중요한 것은 이 과제를 수행하는 다양한 방법이 있더라도 자신이 하고 있는 일의 이면에 있는 일반적인 아이디어를 이해하고 있다는 것입니다.
비트마스크를 활용하기 위해 메모리의 비트로 작업하게 된다는 사실을 알고 있어야 합니다.
C#에서 비트마스크 사용
C#에는 다양한 연산자가 있으며 대부분 비트 연산자라고 합니다. 이러한 연산자는 메모리의 비트 수준에서 작업을 수행합니다.
기호가 있는 비트 연산자는 다음과 같습니다.
&기호로 표시된 연산자는AND연산자입니다.|로 표시된 연산자 기호는OR연산자입니다.~기호로 표시된 연산자는NOT연산자입니다.^기호로 표시된 연산자는XOR연산자입니다.<<기호로 표시된 연산자는왼쪽 시프트연산자입니다.>>기호로 표시된 연산자는오른쪽 시프트 AND연산자입니다.
AND 연산자의 작업은 다음과 같습니다.
X Y Res
0 0 0
0 1 0
1 0 0
1 1 1
‘Res’는 출력이고 ‘X’와 ‘Y’는 입력 가능성입니다.
OR 연산자의 작업은 다음과 같습니다.
X Y Res
0 0 0
0 1 1
1 0 1
1 1 1
‘Res’는 출력이고 ‘X’와 ‘Y’는 입력 가능성입니다.
NOT 연산자의 작업은 다음과 같습니다.
X Y
1 0
0 1
Y는 출력이고 X는 입력 가능성입니다.
XOR 연산자의 작업은 다음과 같습니다.
X Y Res
0 0 0
0 1 1
1 0 1
1 1 0
‘Res’는 출력이고 ‘X’와 ‘Y’는 입력 가능성입니다.
left-shift 연산자의 작업은 다음과 같습니다.
x = 010110011
두 개의 왼쪽 시프트를 주면 비트가 왼쪽으로 2비트 공간 이동합니다.
x << 2
이제 x는 다음과 같습니다.
x = 011001100
그리고 오른쪽에는 두 개의 새로운 0 비트가 추가됩니다.
오른쪽 시프트 연산자의 작업은 다음과 같습니다.
x = 010110011
오른쪽으로 두 번 이동하면 비트가 왼쪽으로 2비트만큼 이동합니다.
x >> 2
이제 x는 다음과 같습니다.
x = 000101100
그리고 왼쪽에는 두 개의 새로운 0 비트가 추가됩니다. 이제 비트 연산자의 작업을 알고 있으므로 입력에 비트마스크를 적용할 수 있습니다.
비트마스크에 사용되는 가장 일반적인 연산자는 AND 연산자입니다. 두 입력이 모두 1일 때 출력이 1이기 때문에 어떤 비트가 1이고 어떤 비트가 0인지 확인하는 데 사용됩니다.
다음은 마스킹된 마지막 4비트를 평가하는 코드입니다.
using System;
namespace HelloWorld {
class Program {
static void Main(string[] args) {
char x = '2';
int y = 0b00001111;
int z = x & y;
Console.WriteLine(z);
}
}
}
메모리에 1바이트의 공간을 확보하기 위해 char 유형 변수 x와 int 유형 변수 y를 구성했습니다.
마지막 4비트가 1인 해당 10진수 값의 이진 버전은 0b00001111로 기록됩니다.
int z= x&y;라는 줄 비트의 and를 계산하고 그 결과를 z라는 변수에 저장합니다. z 변수는 int 데이터 유형이므로 십진수 형식으로 표현된 결과를 볼 수 있습니다.
작업은 다음과 같습니다.
x = 01111101
y = 00001111
z = x& y = 00001101
이것이 보이기 때문에 x 변수가 가장 최근의 4비트를 제외하고 모두 제거되었음을 알 수 있습니다. 이를 위해 AND 연산자를 사용했습니다.
마찬가지로 OR 연산자를 사용하여 비트를 결합할 수 있습니다.
이제 비트에 대한 확실한 지식이 있는 경우 비트를 가지고 놀고 암호를 생성하는 것이 이제 간단하다는 것을 알 수 있습니다.