Finite Field에서 p(x)(Primitive Polynomial)의 계수와 차수가 주어지면 Finite Field의 원소를 벡터의 형태로 출력하는 프로그램입니다.
간단하게 예를 들자면
p(x) = x^3 + x + 1이 주어지면 차수는 3이 되고 계수는 1 0 1 1이 입력됩니다.
그렇게 되면 결과 값으로,
0 = 000 / 1 = 100 / a = 010 / a^2 = 001 / a^3 = 110 / a^4 = 011 / a^5 = 111 / a^6 = 101
이 출력되게 됩니다.
즉, 사용자가 3과 1 0 1 1 을 입력하면 해당 Finite Field의 원소를 벡터의 형태로 출력하게 되어있습니다.
더불어 2번문제 Multiplicative Representation과 3번문제 Additive Representation도 표현하도록 구현하였습니다.
예를 들어,
2번의 Multiplicative Representation의 경우, a^3 과 a^4를 입력하게 되었을 때,
a^12의 값을 구하게 되고, 그 결과값인 101(a^6)를 출력하게 됩니다.
3번문제 Additive Representation의 경우
a^6과 a^5를 입력하게 되면 a^11의 값을 구하게 되고, 결과값인 011(a^4) 을 출력하게 됩니다.
프로그램은 byte형을 이용한 bit shift 방법을 이용하였습니다.
ex ) 100 을 10000으로 만들기 위해
byte a = 4; // 이진수로 100과 같습니다
a = a<<2; // 왼쪽으로 2만큼 shift하여 10000으로 만들어줍니다
byte형은 -128~127byte만 가능하기 때문에 최대 8자리를 넘어갈 경우, 에러가 발생하게 되며 해당 한계점을 수정하지 않았으니 유의 바랍니다.
코드는 아래 github에 저장해놓았습니다.
https://github.com/ahrizwell/myRepository/blob/java/pb1.java
ahrizwell/myRepository
Everything I did. Contribute to ahrizwell/myRepository development by creating an account on GitHub.
github.com
<출력창>
완벽하게 디코딩과 검토를 해보지는 않았으므로 틀린 부분이 존재할 수 있습니다.
'IT > Homework' 카테고리의 다른 글
[대학원 과제] Extended Euclidean Algorithm(확장 유클리드 호제법)을 이용한 모듈러 역원 구하기 with Java (0) | 2020.05.07 |
---|---|
[대학원 과제] 모듈러(Modulo, %)의 역원 구하는 프로그램 with Java (0) | 2020.05.07 |