상세 컨텐츠

본문 제목

Big Ending와 Little Ending

Framework

by thankee 2007. 12. 5. 19:22

본문

1Byte를 8bit를 사용하지 않던 컴퓨터가 대부분 사라지고 8bit를 1Byte로 하는 컴퓨터가 대다수로 되면서 1Byte가 몇 bit를 쓰느냐에 대한 문제는 사라졌지만..

아직까지 1Byte에서 비트의 나열방법은 두가지로 나뉘어있습니다.. 물론 시스템이 네트워크로 연결되지 않고 자기 스스로 혼자서 작업한다면, 어떻게 비트를 정의해 쓰던지 상관없지만, 네트워크로 통신을 하게 되면서부터 통일의 필요성이 생겼습니다.

우선 왼쪽에서 오른쪽으로, 낮은 것부터 높아져가며 데이터가 배열되는 방식을 Big Ending라고 합니다. IBM, Motorola 등에서 대표적으로 사용하는 방식입니다.

다음으로 왼쪽에서 오른쪽으로 높은것부터 낮아져가며 데이터가 배열되는 방식을 little-ending라고 합니다. 우리가 사용하고 있는 대부분의 PC, 즉 80x86시리즈가 little ending를 사용하는 대표적인 예입니다.

    Big-ending : 00001111 : 제일 앞자리서부터 1, 2, 4, 8, 16, 32, 64, 128이 된다. 따라서 240이 된다.
    Little-ending : 00001111 : 제일 앞자리서부터 128, 64, 32, 16, 8, 4, 2, 1이 된다. 따라서 15가 된다.

이렇게 둘로 나뉘는 이유는 컴퓨터를 만들때 표준이 없기 때문입니다. 필요에 따라, 설계하는 목적에 따라, 혹은 설계자의 마음이죠. 여러분이 자신만의 컴퓨터를 기초적인 설계부터 새로 만든다고 할때 여러분이 10bit를 1Byte로 한다고 하더라도, 데이터를 무작위로 배열한다고 하더라도 누가 머라하겠습니까? 현재의 폰노이만 방식을 따르지 않느것도 여러분의 자유이지요.

아무튼 컴퓨터가 설계되고 컴퓨터 혼자서 데이터를 처리할 때는 어떤방식을 쓰던지 상관없지만, 컴퓨터가 통신하게 되면 서로 같은 방식을 써야할 필요성이 생겼습니다. 이러한 약속을 프로토콜이라고도 하죠. 인터넷을 구성하는 대표적인 통신 프로토콜인 TCP/IP에서는 Big ending를 기본으로 사용합니다. 따라서 TCP/IP르르 사용하는 컴퓨터들은 하나의 데이터를 전송할 때 작은 주소가 가장 앞자리에 위치해서 전송됩니다.

 보통 프로그램이 데이터를 전송하면 데이터는 실제 전송 될 때 해당되는 데이터가 int인지, string인지, char인지 따지지 않고 이진수로 보내게 됩니다. 즉 소켓으로 데이터를 전송하면, 데이터의 형은 없게 되는 것이죠. 그럼 어떻게 나중에 데이터를 제대로 보여줄 수 있게 되냐고 물으신다면, 그러기 위해 프로토콜이 존재한다고 말씀드리겠습니다. 컴퓨터는 이렇게 전송된 무형의 데이터를 미리 사전에 약속한 제대로된 프로토콜을 사용하여 다시 본래의 데이터로 읽을수 있게되는겁니다.(잘못된 프로토콜을 사용하면 알수 없는 값이 되어버립니다. 예로 텍스트 인코딩에서 UTF8을 쓸것인가, Euc-Kr을 쓸것인가 에 따라 텍스트가 보이고 안보이고의 차이이지요)

서로 다른 두 컴퓨터가 통신을 하기 위해서는 우리가 생각하는 그 이상으로 많은 것을 두 컴퓨터가 약속해야만하는데, 이러한 약속은 OSI Seven Layer나 TCP/IP 4 Layer등과 같은 계층 모델로 구분할 수 있습니다. 예로 응용레이어의 HTTP, FTP, SMTP 등이나, TCP를 사용할 것인가 UDP를 사용할 것인가, 어떤 케이블을 사용할 것인가, 어떤 주파수 대역을 쓸것인가, 단방향인가 양방향인가, 충돌처리는 어떻게 할 것인가 등은 OSI Seven Layer 모델의 하나의 계층으로 구분될 수 있습니다.

by thankee from tistory.com

관련글 더보기