C++프로그래밍/어셈블리 언어

문자와 엔디안

season97 2024. 9. 14. 20:39

 

▶ 문자 처리

msg에 byte만큼의 크기

ㆍ 결과는 .. ?

msg에 찍혀있는것들

 

ㆍ 뭐 이상한 값들이 들어가있다. 당연한 이야기지만 컴퓨터는 알파벳을 알 수 없다.

ㆍ 따라서 어떠한 규약이 필요한데 가장 기본이되는 것이 아스키코드

아스키 코드 표

 

ㆍ 위 표의 아스키코드와 Hello World 가 일치하는 것을 볼 수 있다.

ㆍ 이렇게 타이핑 해도 Hello World가 출력된다.



 

▶ 엔디안이란?

ㆍ 컴퓨터에서 멀티바이트 데이터를 저장할 때 바이트의 순서를 어떻게 정렬하는지를 나타내는 개념

 

ㆍ 두가지 방식이 있는데 리틀 엔디안과 빅 엔디안이 있다.

 

1. 리틀 엔디안 (Littel Endian)

 

ㆍ 가장 낮은 바이트 (Least Significant Byte, LSB) 가 메모리의 가장 낮은 주소에 저장된다, 즉 데이터의 순서를 거꾸로 저장한다.

 

ㆍ 0x12345678 은  0:78 1: 56 2:34 3:12 순으로 저장된다.

 

ㆍ 작은 숫자를 처리할 때 효율적이다.

 

2. 빅 엔디안 (Big Endian)

 

ㆍ 가장 높은 바이트 (Most Significant Byte , MSB) 가 가장 낮은 주소에 저장된다. 즉 데이터의 순서를 자연스럽게 저장한다. 

 

ㆍ 0x12345678 은  0:12 1:34 2:56 3:78 순으로 저장된다.

 

ㆍ 사람이 읽기 쉬운 형태로 저장되며, 추후 네트워크 프로토콜에서 대게 빅 엔디안을 사용해 데이터를 전송한다.

비교 표

 

특징 리틀 엔디안 빅 엔디안
장점 작은숫자 처리 효율, 호환성, 다양한 데이터 처리, 캐스팅에 유리하다 사람이 보기 좋다, 네트워크 표준, 일관성, 숫자 비교에 유리하다

 

 

'C++프로그래밍 > 어셈블리 언어' 카테고리의 다른 글

어셈블리 논리연산  (0) 2024.09.15
쉬프트 연산  (0) 2024.09.15
변수와 레지스터  (0) 2024.09.14
레지스터 기초  (0) 2024.09.14
데이터 기초 (숫자를 담는 크기)  (0) 2024.09.14