본문 바로가기

Endianness

: 컴퓨터의 메모리와 같은 1차원의 공간에 여러 개의 연속된 대상(Byte)가 저장되는 순서(Byte order)

 

CPU에 따라서 바이트의 숫자를 메모리 공간에 저장하는 방식에 있어 차이가 있습니다.

이해하기 쉽게 32비트 CPU란 가정하에 간략한 예를 들어보겠습니다.

숫자 1을 저장 할 때, 앞에서 부터 저장할 것인지, 뒤에서 부터 자장할 것인지 순서가 다릅니다.

# 숫자 1 저장 예시 1
00000000 00000000 00000000 00000001
# 숫자 1 저장 예시 2
00000001 00000000 00000000 00000000

메모리와와 주소의 이해

  • 데이터 최소 단위
    • 1bit
  • 컴퓨터 메모리의 데이터 최소 저장 단위
    • 1Byte(8bit)
    • 1bit를 저장해도 1byte 공간 단위를 사용하여 그 중 1bit만 저장한다.
  • 컴퓨터의 데이터 최소 처리 단위는 32bit (4Byte), 64bit (8Byte)이다.
    즉, 한번에 32bit(4Byte), 8개 64bit(8Byte)를 저장하고 처리 한다.
  • 32bit(4Byte, 16진수 8개) 운영체제의 경우
    • 4,294,967,296(4GB) 개의 1Byte 단위로 메모리 주소값 가진다.

MSB, LSB

십진수 439041101 = 16진수 0x1a2b3c4d = 2진수 00011010001010110011110001001101

16진수 0x1a2b3c4d = 십진수 439041101 = 2진수 00011010001010110011110001001101

  • 2진수에서 가장 큰 자리수 = 첫번째 자리수 = 첫번째 8bit
    • 2진수 00011010
    • 16진수 1A
  • 2진수에서 가장 작은 자리수 = 마지막 자리수 = 네번째 8bit
    • 2진수 01001101
    • 16진수 4D

 

MSB(Most Significant Bit): 2진수(bit)의 가장 큰 자릿수

LSB(Least Significant Bit): 2진수(bit)의 가장 작은 자릿수

MSB와 LSB는 데이터를 비트(Bit) 단위로 놓고 봤을 때 사용되는 용어

Significant의 의미는, 해당 비트가 숫자 값의 크기에 얼마나 큰 영향을 미치는지를 나타냄

Big-Endian

  • 저장할 데이터를 2진수로 본다면,
    첫번째 1byte(MSB)가 가장 낮은 메모리 주소부터 저장되는 방식
  • 인간의 선형 방식과 동일
  • 네트워크와 같이 bit 단위의 연산을 기본으로 한다면, 대부분 Big Endian 방식

Little-Endian

  • 저장할 데이터를 2진수로 본다면,
    저장값의 마지막 1byte(LSB)가 가장 낮은 메모리 주소에 먼저 저장되는 방식
  • 인간이 사용하는 선형 방식과는 반대
  • 대부분의 인텔 CPU 계열에서 사용

비교

Big-Endian 방식은, 숫자 비교와 디버깅이 쉽다

Little-Endian 방식은, 연산 형변환이 쉽다

 

BasicLike

어? 나 프로그래밍 좋아하네?