최근 BigInteger 를 통해 2진수, 10진수, 16진수로 간단하게 변환하는 방법을 정리했습니다.
[안드로이드] byteArray, 2진수, 10진수, 16진수 간단 변환 (with BigInteger)
추가로, BigInteger 를 활용해서 특정 데이터 binary 의 bit 를 변경하는 방법을 정리하려고 합니다.
1. BigInteger
BigInteger 는 허용 범위와 상관없이 큰 값을 취할 수 있는 특징을 가집니다.
더 나아가, BigInteger 를 통해 아래와 같은 동작을 활용 할 수 있습니다.
- 산술 연산(add, subtract, divide, multiply)
- 비트 연산(and, or, xor, shiftLeft, shiftRitght)
- 비트 컨트롤(bitLength, testBit, setBit, clearBit)
이 중에 비트 컨트롤을 활용하려고 합니다.
2. BigInteger : 비트 컨트롤
- bitLength() : 비트 수 반환
- testBit(int n) : 지정된 비트가 설정된 경우 true 반환
- setBit(int n) : 지정된 비트를 set(1) 하고 BigInteger 반환
- clearBit(int n) : 지정된 비트를 set(0) 하고 BigInteger 반환
간단한 예시를 보면 아래와 같습니다.
val bigInteger = BigInteger("1010", 2)
bigInteger.bitLength() // return 4
bigInteger.testBit(1) // return true
bigInteger.setBit(0) // return BigInteger("1011", 2)
bigInteger.clearBit(1) // return BigInteger("1000", 2)
3. BigInteger : 예제
BigInteger 비트컨트롤을 활용하여 다음과 같은 예제로 구현해보았습니다.
- 임의의 값을 2진수 또는 10진수 또는 16진수로 입력하고 apply 한다
- 지정된 임의의 값은 2진수, 10진수, 16진수로 표시해준다.
- 지정된 임의의 값의 bitLength 를 표시해준다.
- bit index 를 입력하고 해당 bit 를 변경해준다.
- bit index 를 입력하고 해당 bit 값을 가져온다.
4. BigInteger : 예제 다운로드
https://github.com/bictoselfdev/BigIntegerEx
[참고자료]
Android developers
0 comments: