반응형
크몽 '경매하는 개발자' 님의 경매/부동산/IT/사업 채널
경매하는 개발자
크몽 '경매하는 개발자' 님의 경매/부동산/IT/사업 채널
전체 방문자
오늘
어제
  • 분류 전체보기 (329)
    • IT (128)
      • 아두이노 (6)
      • C C++ (17)
      • C C++ 컴파일 에러 (3)
      • LINUX (3)
      • Git (1)
      • OpenGL (0)
      • IT 상식 (38)
      • EXCEL & VBA (9)
      • 정보처리기사 (20)
      • 무작정 웹사이트 만들기 (6)
      • 포토샵 (3)
      • 파이썬 & vscode (16)
      • 머신러닝 & 인공지능 & 데이터사이언스 (5)
    • 부동산 (91)
      • 부동산일반 (31)
      • 세금 (6)
      • 경매 (46)
      • 법, 소송 (8)
    • 개인사업자 (43)
      • 할 일 (11)
      • 꿀팁 (9)
      • 세금 (14)
      • 지원사업 (8)
    • 독후감 (25)
      • 독후감 (25)
    • 경제 (4)
      • 거시경제 (4)
    • Tistory (34)
      • 티스토리 (23)
      • 애드센스 (11)
    • 기타 (4)
      • 에세이 (2)
      • 퇴사준비 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 온비드공동인증서
  • 부의추월차선독후감
  • 세금계산서
  • 애드센스
  • 부의추월차선리뷰
  • 부의추월차선
  • 일반과세자
  • 온비드공인인증서
  • 경매
  • 전자세금계산서
  • 공매
  • 부가가치세
  • 부의추월차선요약
  • 부의추월차선줄거리
  • 온비드공매
  • 전입신고
  • 개인사업자
  • 확정일자
  • 티스토리애드센스
  • 부의추월차선서평

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
크몽 '경매하는 개발자' 님의 경매/부동산/IT/사업 채널

경매하는 개발자

[통신] LSB, MSB 정의 및 2바이트 16진수 변환 방법
IT/IT 상식

[통신] LSB, MSB 정의 및 2바이트 16진수 변환 방법

2022. 6. 11. 11:50
반응형

[통신] LSB, MSB 정의 및 2바이트 16진수 변환 방법

반응형

 


1. 왜 통신에선 8진수를 안쓰고 16진수만 쓰는가?

 

- 8진법을 컴퓨터 분야에서 쓰는 이유는 8진수 자릿수 하나가 23을 표현할 수 있어서 2진수를 직관적으로 빠르게 변환 가능하고, 16진수에 비해 사람이 계산하기 간편하기 때문이다. 이는 프로그래밍할 때 사람이 비트까지 고려해야 했던 초창기 컴퓨터에선 긴요했다. 다만 8진법의 자릿수 하나가 1바이트(8비트, 0000 0000)에 정확히 대응하지 않기에 이후 표현법을 16진법에 물려주게 된다.

 

- 요즘은 컴퓨터공학과의 교육과정 외엔 거의 안 쓰인다. 

 

- 오직 UNIX의 파일 액세스 권한 설정에서만 8진법으로 표기한다. 유닉스의 파일 액세스 권한은 소유자, 그룹, 외부인 각각에 대해 읽기, 쓰기, 실행 권한을 지정할 수 있는데 읽기, 쓰기, 실행 권한 3비트를 8진수 하나로 묶어서 표기한다. 예를 들어 권한 751은 rwxr-x--x 를 뜻하는데 파일 소유자는 읽기, 쓰기, 실행 권한 모두를 갖고 파일의 그룹 구성원에겐 읽기와 실행, 그 외의 사용자에겐 실행 권한만을 준다는 의미이다.

 

반응형

 


2. LSB / MSB 정의

 

한줄 요약

  • MSB(Most Significant Bit) : 제일 큰 수 (또는 부호 :: 양수(+)면 0, 음수(-)면 1)
  • LSB(Least Significant Bit) : 제일 작은 수

 

1) LSB

 

- LSB는 Least Significant Bit의 약자로서 하나의 데이터 형에서의 가장 낮은 위치의 Bit를 의미합니다. 이 예를 들어서 signed char 데이터 형과 unsigned char 데이터 형에 대해서 예를 들면 아래와 같습니다.

 

- 일단 LSB의 위치는 가장 값이 작은 비트인 2^0에 위치하고 있는 것을 알 수 있습니다. 이 LSB의 값을 이용하여 해당 데이터 형에 들어있는 실제 숫자가 짝수인지 홀수인지 손쉽게 알아낼 수 있습니다. 이는 2진수 시스템에서는 당연한 이치라고 할 수 있겠죠?

 

- 한편 이런 LSB는 프로그래밍 시 주로 난수발생 함수, 해시 함수, 검사합(Checksum) 함수 등에서 많이 쓰이고 있습니다. 왜냐하면 LSB는 값이 조금이라도 변경된다면, 데이터 형의 최하위 비트이므로 그 값이 거의 100% 변화가 발생하기 때문이죠.

 

 

- 다음은 Signed Char 데이터 형에서의 LSB에 대해서 살펴보도록 하겠습니다. Signed Char 데이터형의 LSB 역시 Unsigned Char 데이터형에서의 LSB와 큰 차이가 없습니다. 즉, LSB는 데이터형의 가장 최하위 비트값이라고 보면 됩니다.

반응형

 

 

2) MSB 

 

- MSB는 Most Significant Bit의 약자로 어떠한 데이터 형의 최상위 비트를 의미합니다. 이 MSB는 데이터 형에 따라서 특징이 조금 나뉘게 되는데, 우선 위에서 소개했던 unsigned char 데이터 형의 MSB에 대해서 살펴보겠습니다.

 

- unsigned char 데이터 형에서의 MSB는 2^7이라는 값을 지니고 있는 위치의 비트라고 할 수 있겠습니다. 그 외에는 unsigned char 데이터 형의 가장 값이 큰 위치의 최상위 비트 정도로 정의를 내릴 수 있겠습니다.

 

- 다음은 가장 중요하게 살펴봐야할 signed char 데이터 형에서의 MSB입니다. 위에 소개했던 signed char 데이터 형의 MSB를 살펴보면 MSB 위치가 부호자리를 나타내고 있는 것을 알 수 있습니다. 따라서 해당 데이터 형의 값이 MSB만 확인하면, 양수인지 혹은 음수인지를 손쉽게 알아낼 수 있습니다.

 

- 따라서 signed char 데이터 형에서의 MSB에 대해 정의를 내리자면, 가장 최상위의 부호값 비트라고 할 수 있겠습니다. 아래 그림을 예시로 보면 이해가 잘 될 듯 합니다.

 

ex1) 부호없는 경우(unsigned) : MSB는 데이터가 됨

 

ex2) 부호있는 경우(signed) : MSB는 부호가 됨

   - 양수(+) : 0, 음수(-) : 1

 


3. 데이터의 8진수, 16진수 변환 방법

 

1) 8진수 변환

  - 현재 통신 프로토콜에서 사용 X (상식으로 알고 있기)

  - 데이터 앞에 0을 붙여 표기 (예: 075, 0653 등)

 

※ 8진수 변환 방법

  Step 1. 10진수 → 2진수 변환

  Step 2. 3자리씩 끊기

  Step 3. 3자리씩 읽어 8진수로 변환

 

 

 ex) 93을 8진수 변환하기

 step 1. 93 (10진수) → 0101 1101 (2진수)

 step 2. 001 011 101

 step 3. 1 3 5 → 0135 (8진수)

반응형

 

 

 

2) 16진수 변환

  - UDP/TCP 등 통신에서 보편적으로 사용하는 데이터 처리 방식

  - 데이터 앞에 0x를 붙여 표기 (예: 0x7A, 0x8DA9 등)

  - 1바이트 : 2자리 / 2바이트: 4자리 / 3바이트:  6자리 ... 표기

 

※ 16진수 변환 방법

  Step 1. 10진수 → 2진수 변환

  Step 2. 4자리씩 끊기

  Step 3. 4자리씩 읽어 16진수로 변환

 

 

<16진수 변환표>

10진수 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
16진수 0 1 2 3 4 5 6 7 8 9 A B C D E F

 

ex) 93을 16진수 변환하기

 step 1. 93 (10진수) → 0101 1101 (2진수)

 step 2. 0101 1101

 step 3. 5 D → 0x5D(16진수)

 

 

3) 음수 변환 (8진수/16진수)

 

※ 음수 변환 방법

  Step 1.  I-xI (절대값)의 10진수 → 2진수 변환

  Step 2. 0→1, 1→0 값 리버스 (2의 보수라고 부름)

  Step 3. 결과값 +1

  Step 4. 3자리(8진수) / 4자리(16진수)씩 끊기

  Step 5. 3자리 / 4자리씩 읽어 8진수 / 16진수로 변환

 

반응형

 

ex) -88을 8진수/16진수로 변환하기

 Step 1. 88 (10진수) → 0101 1000

 Step 2. 0101 1000 → 1010 0111

 Step 3. 1010 1000

 Step 4. (3자리) 010 101 000

              (4자리) 1010 1000

 Step 5. (8진수) 2 5 0 → 0250 (8진수)

              (16진수) A 8 → 0xA8 (16진수)

 


4. 실제 통신에서는 데이터를 어떻게 보낼까?

 

- TCP, UDP 통신 등에서 데이터 송수신시 ICD(Interface Control Document)에서 정의한 통신규약대로 데이터를 2진수로 주고받고, Input/Output 값은 16진수로 확인 가능하다. 

 

- 예를들어 실제 현업에서 사용하는 데이터 I/O ICD는 아래와 같은 형식을 따른다.

 

 

위 ICD를 설명하자면,

① 하나의 변수당 할당하는 데이터 크기는 16비트(2바이트)이다.
② MSB가 각각 256(2^8), 64(2^6)라는 것은 부호가 없다는 뜻이다.

   (부호가 있으면 MSB는 0(+) 또는 1(-)이 된다.)

③ 1~9비트까지는 과일의 ID 데이터를 보낸다. (총 9자리)

④ 10~16비트까지는 과일의 수량 데이터를 보낸다. (총 7자리)

 

 

예를 들어 과일가게에서 멜론 1개를 팔게되었다고 가정하여

따라서 아래의 데이터 송수신 표를 참고해서 설명하면,

 

반응형

 

① 포스기(Client)에 멜론 1개를 입력하면 16진수 형태로 Output 데이터 0x3081가 생성된다.

② 포스기(Client) → 서버로 Output 데이터를 2Byte의 2진수 0011 0000 1000 0001 형태로 보낸다.

③ 정상적으로 송신이 완료되면, 서버에서는 16진수 형태로 Input 데이터 0x3081를 받아 연산 및 처리한다.

 

 

 

 

반응형

'IT > IT 상식' 카테고리의 다른 글

[IT] R프로그래밍 및 R Studio 설치하기  (0) 2022.08.14
사용쉬운 매크로 프로그램 키매크로(key macro) 다운 및 사용법  (0) 2022.08.12
[통신] IP 주소 IPv4 vs. IPv6 차이  (0) 2022.06.03
[IT상식] visual studio 2019 다운로드 / 제품키  (1) 2022.05.23
[IT 상식] 특정 시간에 컴퓨터 실행 / 종료 / 재부팅 타이머 만들기  (0) 2022.02.24

    크몽 '경매하는 개발자' 님의 경매/부동산/IT/사업 채널

    'IT/IT 상식' 카테고리의 다른 글
    • [IT] R프로그래밍 및 R Studio 설치하기
    • 사용쉬운 매크로 프로그램 키매크로(key macro) 다운 및 사용법
    • [통신] IP 주소 IPv4 vs. IPv6 차이
    • [IT상식] visual studio 2019 다운로드 / 제품키
    크몽 '경매하는 개발자' 님의 경매/부동산/IT/사업 채널
    크몽 '경매하는 개발자' 님의 경매/부동산/IT/사업 채널
    크몽 '경매하는 개발자' 님의 경매/부동산/IT/사업 채널입니다.

    티스토리툴바