본문 바로가기

IT/Homework

[대학원과제]Finite Field Program with Java

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

<출력창>

<차수 3에 계수 1011을 입력하였을 때 결과값>

 

완벽하게 디코딩과 검토를 해보지는 않았으므로 틀린 부분이 존재할 수 있습니다.