본문 바로가기
네트워크

프리메이플이 왜 최대 레벨이 255였을까?

by 손정빈 2017. 7. 11.
728x90
반응형

어렸을 때 게임을하면서 괜히 그 당시에는 쓸데없는 고민을 해본 적이 있다.


예를 들어 왜 만렙이 200이지? 왜 최대 방인원수가 정해져있지? 왜 서버에 들어 갈 수 있는 인원이 제한되어 있을까? 등...


어렸을 당시에는 이러한 고민에 대해 생각만 했을 뿐 정작 답을 찾으려고 하지 않았다.


그런데 컴퓨터공학과에 들어오면서 이러한 이유들을 하나씩 알아가기 시작했다.


전 94년생으로 중학생 당시 한창 프리메이플이 유행하고 있었다. 너나 나나 집에 있는 컴퓨터로


프리메이플을 구축하고 친구들과 폭업을하고 마음껏 사냥하곤 했었다.


그런데 프리메이플을 했을 때 최대 레벨이 255로 되있었고 그 이상 강해지기 위해서는 환생을 해야 했었다.


근데 왜 여러분은 프리메이플이 최대 레벨이 255일 것이라고 생각해본적이 있는가?



현재 저자는 군대를 전역 후 대학교를 복학하여 현재 3학년에 재학중에 있다.


1학년 때 배웠던 C언어를 통해 왜 255인지를 깨닫게 되었다.


프로그래밍 언어에서 데이터를 저장받는 공간을 변수라고 한다.


이러한 변수의 종류에는 C언어로 기준삼아 char, int, short, float, double 등이 존재한다.


이러한 변수마다 데이터를 담을수 있는 크기가 정해져 있는데 여기서 우리가 볼 변수는 바로 char형태이다.


char의 경우 -128~127의 데이터를 입력 할 수있다. 


프로그램 지식이 전혀 없는 사람이라면 "먼소리야"라고 생각할수도있다. 


char 형태의 데이터는 -128부터 127까지의 수를 넣을 수 있다는 것이다. 128이나 -129는 저장할 수 없다는 뜻이다.


근데 여기서보면 char은 1byte로 8bit의 크기를 가지고 있다. 즉 1bit당 0과 1, 즉 2가지를 표현할


수 있는데 1바이트는 2^8을 표현할 수 있다는 것이다. 즉 256가지의 경우를 표현 할 수 있다는 것이다. 


그렇기에 -128 ~ 127까지 총 256가지의 숫자를 넣을 수 있는 것이다.


그런데 프로그래밍을 하다보면 음수가 필요없는 경우가 생긴다 예를 들어 레벨의 경우 -로 내려갈 상황이 존재하지 않는다. 그렇기에 굳이 음수를 넣을 공간을 남기지 않아도 된다.


그렇다면 256가지를 모두 양수로 사용할려면 어떻게 할까 그건 간단하게도


unsigned char이라고  char  앞에 unsgined를 붙여주기만 하면 된다.


그러면 0~255까지의 숫자를 표현할수 있게 된다. 


그렇다면 결론은 나왔다. 


프리메이플에서 레벨의 데이터를 담고 있는 형태는 unsinged char이라는 걸 알 수 있게 된다. 


그렇기에 최대 레벨이 255인 것이다. 


머 여기서 왜 unsigned 를 붙이면 양수만 쓸 수 있는가라는 의문점이 생길 수도 있는데


간단히 설명하자면 각 자료형의 비트에서 가장 앞자리는 부호비트라고 한다. 


이 부호비트를 부호로쓰지 않고 그냥 데이터를 받는 비트로 바꾸는 것이다.


이 이상은 혹시 궁금하시다면 C언어를 찾아보길 바란다.



--------------------------------------------


어디까지나 저의 지식안에서의 추론입니다. 

확실한 답이 아닙니다.

반응형

댓글