상세 컨텐츠

본문 제목

LFSR 원리와 C 코드 만들어보기 (1)

프로그래밍

by 스터디올 2021. 10. 20. 23:22

본문

반응형

LFSR은 Linear Feedback Shift Register의 줄임말이다. 이는 현재 상태에서의 선형 연산(?!)을 통해 다음 상태를 생성하는 레지스터라고 한다.

LFSR은 주로 난수를 만드는데 사용된다고 한다. LFSR은 seed 라는 수가 있다. 주로 몇 bit로 표현한다. 즉 16bit seed를 사용, 32bit seed를 사용한다 라고 많이들 표현한다. 해당 seed를 특정한 규칙이 있는 XOR 계산을 통해 주기를 갖는 수를 생성한다고 한다. 그 주기는 seed의 bit수에 따라 달라진다. 16bit이면 2^16-1 개 만큼의 주기를 갖는다고 한다. 여기서 -1을 한 이유는 0을 제외했기 때문이다.

자 예를 가지고 설명해보자.

우리에게 위와 같이 8bit 짜리 seed가 정해졌다고 하자. 해당 수는 2진법으로 표현했고 10진법으로 나타내면 116이다. 위에서 설명할때 특정한 규칙의 XOR 계산이 있다고 했다. 이는 다항식으로 표현할 수 있다고 한다.

왼쪽부터 순서대로 1,2,3,4,5,6,7,8 까지의 index를 주어진다고 가정했을때 7번과 6번을 XOR 한 값을 2번과 XOR을 해서 0번째 bit에 그 결과를 넣고 기족에 있던 1~7 --> 2~8로 shift 시켜준다. 이를 다항식으로 표현하면

그런데 왜 이렇게 다항식을 꾸미는지는 잘 모르겠다. 그런데도 내가 다항식을 적어보고 규칙을 이해하려는 까닭은 다항식이 주어지고 LFSR을 설계하라고 했을 때 어떻게 할지 생각해 본 것이다. 다항식으로 spec을 주는게 편하니까 말이다.
자 다시 와서 8bit seed는 116이고 다항식은 위와 같을때 그 다음 seed값은 어떻게 될까?

7번 bit의 위치와 6번 bit를 XOR --> 1
위에 결과와 2번 위치의 bit를 XOR --> 0

따라서 연산결과 생기는 값은 0이다. 그 다음에는 Shift를 하면 아래와 같이 58이라는 다음 seed가 나오게 된다.

다음에는 이 것을 통해 C 코드로 구현해 보려 한다.

*같이 읽으면 좋은 글*
https://jun-study.tistory.com/67

LFSR 원리와 C코드 만들어보기(2)

https://jun-study.tistory.com/39 LFSR 원리와 C 코드 만들어보기 (1) LFSR은 Linear Feedback Shift Register의 줄임말이다. 이는 현재 상태에서의 선형 연산(?!)을 통해 다음 상태를 생성하는 레지스터라고 한..

jun-study.tistory.com

https://jun-study.tistory.com/m/68

LFSR 원리와 C코드 만들기(3) (feat. Galoris LFSR)

2022.04.21 - [프로그래밍] - LFSR 원리와 C코드 만들어보기(2) LFSR 원리와 C코드 만들어보기(2) https://jun-study.tistory.com/39 LFSR 원리와 C 코드 만들어보기 (1) LFSR은 Linear Feedback Shift Register의..

jun-study.tistory.com



반응형

관련글 더보기

댓글 영역