C# - BitArray

양규빈·2023년 7월 9일
0

개요

클래스는 비트(bit) 단위로 데이터를 저장하고 조작하기 위한 컬렉션 클래스이다.
BitArray는 배열과 유사한 형태로 구성되며, 각 비트는 불리언(true/false) 값으로 표현된다.

  • BitArray는 1비트만 사용하여 여러 개의 불리언 값을 저장한다. 따라서 메모리를 더 효율적으로 사용할 수 있다. 예를 들면, 1바이트로 32개의 옵션을 나타낼 수 있다(게임 아이템을 1바이트를 이용해서 32가지를 표현하는 코드도 구현 가능).

  • BitArray는 동적으로 크기를 조정할 수 있다. 따라서 초기화 시에 크기를 지정하지 않아도 되며, 필요에 따라 BitArray에 비트를 추가하거나 제거할 수 있다.

  • 메서드와 속성을 제공하여 비트를 조작할 수 있다.

  • 비트 연산을 지원한다. AND, OR, XOR, NOT과 같은 비트 연산을 사용하여 BitArray 간에 비트 단위로 연산을 수행할 수 있다.


코드 및 세부 내용

상단 코드의 PrintBit()는 BitArray 내의 비트들을 출력하는 함수이다.
조건문을 이용하여, false일 경우에는 0. true일 경우에는 1이 출력되도록 만들었다.

① BitArray.Set(배열순서, 참거짓)을 이용하여 BitArray에 참거짓을 셋트할 수 있다.
② 배열명.Count를 이용하여 비트배열의 최대값을 구할 수 있다.
③ 비트 배열은 비트형 자료를 담은 함수이기 때문에, 쉬프트 연산 등을 사용할 수 있다.
④ 비트연산으로 처리하기 때문에 연산 속도가 굉장히 빠르다.
⑤ Set함수를 이용해서 비트를 거꾸로 정렬

상단 코드에서는 BitArray에 4의 값을 넣었다.
하지만, 출력값은 반대로 나왔으므로 Reverse 함수를 이용하면 원래 표현하고자 하는 값을 2진수로 표현할 수 있다.

상단의 result1 과 result 2, result3는 동일한 결과를 가진 코드다.
BitArray를 사용하면 반복문을 사용하지 않고도 bool타입의 true형을 초기화 할 수 있다.

이때 필요한 것이 using System.Linq; 헤더파일을 추가해 주어야 한다.

이 함수는 비트 배열(BitArray)을 정수(int) 값으로 변환하는 확장 메서드(extension method)아다.

비트 배열은 0 또는 1 값만 저장할 수 있는 배열이며, 이 함수는 비트 배열의 각 요소를 순회하면서 1이면 해당 위치에 대응하는 2의 거듭제곱 값을 더해주고, 0이면 건너뛴다.

이 과정을 통해 비트 배열의 값을 10진수 정수로 변환하게 된다.

profile
훌륭한 개발자를 꿈꾸는 중입니다

0개의 댓글

관련 채용 정보