[개발용어] Offset(변위, 변위차) 란?

(잡담) 최근에 C언어를 사용해서 데이터 관리하는 작업을 하게되었는데 버퍼, 비트연산... 학부때부터 싫어해서 멀리했더니 도통 단어도 낯설고 각 과정에서 등장하는 표현이나 방식들이 어떤 의미인지 찾아보는데 시간을더 많이 쓰게 되는 것 같습니다. 


 

검색 : Naver

Offset

- 동사 : 상쇄[벌충]하다

- 형용사 : 오프셋 인쇄의

 

네이버에서 사전적 검색결과로는 이와 같습니다. 대부분 변수명으로 사용되는 것들은 이름만으로 어느정도 기능을 하겠구나~ 예상이 가능한데 이것만으로는 어떤걸 의미하는지 알 수가 없었습니다.

 

 

검색 : Naver

지식백과로 들어가 각 분야에서 사용되는 의미를 살짝 찾아봅니다. 보일러용어 부터 IT, 심지어 더 내려보니 쇼핑용어사전 에서도 오프셋(offset) 이라는 단어가 사용되고 있었습니다. 저는 전자 전공이 아니기 떄문에 전류.. 와 같은 내용은 가뿐히 패스 했습니다. 그래도 잘 살펴보니 공통적으로 '편차, 차이, 위치' 라는 내용이 포함되어 있다는 걸 찾아냈습니다!

 

사실 IT 관련 용어는 네이버 보다는 Google 검색을 추천드립니다. 수 많은 개발자분들께서 깃허브, 티스토리에 글을 쓰기도 하고 의외로 같은 의문점을 가지고 질문하는 다른 사람들의 글을 만나볼 수 있기 때문이죠.

 

위에서 어느정도 추측을 해보았으니, '아~ 뭔가 차이에 관한 걸 의미하겠구나!' 라는 베이스를 깔고, 그럼 더 정확한 의미를 찾아보니 다음과 같은 해석을 얻을 수 있었습니다.

 


offset(오프셋) 이란?

배열이나 자료구조 오브젝트 내의 오프셋(offset)은 일반적으로 동일 프로젝트 안에서 오브젝트 처음부터 주어진 요소나 지점까지의 변위차를 나타내는 정수형이다.
이를테면, 문자 A의 배열이 'abcdef'를 포함한다면 'c' 문자는 A 시작점에서 2의 오프셋을 지닌다고 할 수 있다.
어셈블리어와 같은 저급 프로그래밍 언어에서 오프셋은 상대 주소(relative address)로 부른다.

- 출처 : 위키백과 ← 클릭

 

똑같은 말이지만 흔하게 사용되는 예문을 통해 다시 복습해보겠습니다.

문자 C는 100번지의 주소를 가리키고 있다.
C + 7
위와 같은 수식이 있을 때, '7'이 offset(오프셋)을 의미한다.
또한 이 수식의 결과는 107 번지를 의미한다.

오프셋을 이용하여 주소를 나타내는 '상대주소 지정방식' 이라고도 표현한다.

 

같은말 다른 표현입니다. 이제 조금 감이 오실까요?

물론 offset(오프셋)이 사용되는 환경에 따라서 그것이 가르키는게 정확이 무얼 의미하는지는 달라지겠지만, 이제 기본 지식을 알고 있기 때문에 코드를 해석하는 과정에 있어서 조금 더 쉽게 하실 수 있을 것이라고 생각합니다.