리틀 엔디안과 빅 엔디안의 최하위 비트 계산

리틀 엔디안과 빅 엔디안의 최하위 비트 계산

제가 조사한 바에 따르면 Little Endian은 가장 작은 메모리 주소에 Least Significant Byte를 저장하고 Big Endian은 가장 작은 메모리 주소에 가장 큰 Significant Byte를 저장합니다.

그러나 유효 바이트를 계산하고 비교하는 방법을 이해하지 못합니다.

예를 들어, 이것으로부터대지, 아래 이미지는 4바이트, 90, AB, 12, CD가 Little Endian 형식으로 메모리 주소에 저장되는 방식을 보여줍니다.

리틀 엔디안

4 중에서 어느 바이트가 더 큰지 어떻게 비교합니까? 먼저 모두 16진수 값으로 변환한 다음 10진수 값을 기준으로 비교했지만 이 방식으로는 작동하지 않는 것 같습니다.

205 > 18 그런데 CD는 가장 작은 메모리 주소에 저장되어 있으니.. 그러니까.. 제가 틀렸습니다.

모든 설명을 부탁드립니다.

Treating CD as a hex value, with a decimal value of 205.
Treating 12 as a hex value, with a decimal value of 18.
Treating AB as a hex value, with a decimal value of 171.
Treating 90 as a hex value, with a decimal value of 144.

답변1

귀하가 링크한 웹 페이지에는 엔디안에 대한 매우 혼란스러운 설명이 포함되어 있는 것 같습니다!

단어에 있는 개별 바이트의 실제 값은 메모리에 저장되는 위치와 관련이 없으며 전체 4바이트 단어의 일부로서의 위치만 관련됩니다.

엔디안은 다중 바이트 단어에만 적용됩니다. 귀하의 경우 다음과 같은 4바이트 단어가 있습니다.

Decimal      Hex           Binary
2427130573   90 AB 12 CD   10010000 10101011 00010010 11001101

0x90이는 가장 중요한 바이트( )가 메모리에 먼저 저장되거나 가장 낮은 메모리 주소에 저장되는 빅엔디안 표현입니다 .

리틀 엔디안 표현에서 바이트는 다음과 같이 메모리에서 간단히 반전됩니다.

Decimal      Hex           Binary
2427130573   CD 12 AB 90   11001101 00010010 10101011 10010000

이제 최하위 바이트( 0xCD)가 메모리나 최하위 메모리 주소에 먼저 저장됩니다.

관련된 바이트의 실제 값은 메모리에서의 위치를 ​​결정하지 않고 전체 단어에서의 위치만 결정한다는 것을 알 수 있습니다.

엔디안의 개념은 링크된 기사에 설명된 대로 CPU 아키텍처로 돌아가며 두 방법 모두 장점과 단점이 있습니다.

인간이 숫자를 생각하는 가장 자연스러운 방법은 빅 엔디안이라는 관점입니다. 왜냐하면 이것이 십진수를 처리하는 방식이기 때문입니다. 귀하의 경우 십진수는 2427130573빅 엔디안 표기법으로 쓰여졌다고 할 수 있습니다. 즉, 가장 중요한 숫자( 2)가 먼저 쓰여지고 오른쪽으로 갈수록 유의성이 감소합니다(즉, 가장 왼쪽 숫자의 값을 변경하는 것이 가장 중요한 숫자입니다). 숫자의 값). 그런 식으로 읽는 방법을 알고 있는 한 숫자는 최하위 숫자를 먼저 시작하는 것처럼 왼쪽에서 오른쪽으로 동일하게 쓸 수 있습니다 3750317242(편집: 우연히 이것이 유니코드 파일의 첫 번째 2에 BOM(바이트 순서 표시)이 저장되어야 하는 이유입니다. 운영 체제가 파일을 해석하는 방법을 알 수 있도록 파일의 바이트 수를 저장합니다.)

그러나 컴퓨터가 계산을 수행하려면 최하위 바이트를 먼저 저장하는 것이 가장 효율적인 경우가 많습니다. 나는 빅 엔디안과 리틀 엔디안에 대한 논쟁이 또 다른 토론의 주제이고 온라인에 이에 대한 많은 소스가 있다고 생각합니다!

이것이 어느 정도 명확하게 도움이 되기를 바랍니다!

관련 정보