빅 엔디안과 리틀 엔디안의 차이점을 기억하는 실질적인 트릭이 있습니까?


13

나는 빅 엔디안과 리틀 엔디안 문제로 매일 일하지 않으므로 어떤 것이 무엇인지 기억하기가 매우 어렵습니다.

최근에 두 사람의 차이점을 묻는 인터뷰를 받았습니다. 기억하지 못해서 "추측"(50 % 확률)을 결정했지만 실패했습니다.

그렇다면 빅 엔디안과 리틀 엔디안의 차이점을 기억하는 데 널리 알려진 실용적인 비법이 있습니까?


10
나는 얇은 KYOU 더 엔디안이 무엇인지 알리는 당신은 항상 구글 있도록 그것이 라운드 어떤 방법 기억하지 않을 수 없다는 꺼져
JK합니다.

나도 그것을 기억하는 데 문제가 있고 혼란스러운 mnemotechnic 트릭이 너무 많습니다. 나의 유일한 믿을만한 도움은 Wikipedia 기사를 얻을 수 있도록 구글에 엔디안 니스 (endianness) 철자를 사용하는 것이다.
mouviciel

3
재미있는 우연의 일치-나는 오늘이 링크에서 우연히 만났
Nevermind

@Nevermind 두 번째 단락 이후 기사를 읽는 것을 중단했습니다. "컴파일러 작성자와 레지스터에 매핑 된 메모리를 다루어야하는 사람들에게만 관심이 있습니까?" 그것이 끔찍한 정원 경로 문장 이라는 사실 외에도 레지스터를 다루는 코드가 가장자리임을 암시합니다. 장치 드라이버없이 컴퓨터를 사용하십시오.
dodgethesteamroller

답변:


14

나는 항상 그것이 잘못된 방식으로 정의되었다고 생각했으며, 그것이 그것을 기억하는 요령이기도합니다. 원어민이 아닌 영어 사용자로서, "end"는 "start"의 반대라고 생각합니다 (물론 "end"는 끝-시작 끝 또는 끝 끝을 의미 할 수 있음). 어쨌든, 나는 단지 "그것은 잘못된 길을 정의했다"는 것을 기억한다 :)

  • 엔디안 에서 가장 중요한 (가장 큰) 바이트가 시작에 있습니다.
  • 작은에서 엔디안 , 최하위 (littlest 한) 바이트는에 시작 .

또는 비트 엔디안을 참조하십시오 .

  • 128 64 32 16 8 4 2 1은 작은 것으로 끝나기 때문에 빅 엔디안입니다.
  • 1 2 4 8 16 32 64 128은 거의 끝나지 않기 때문에 작은 엔디안입니다.

엔디안 이라는 단어의 일반적인 사용은 단어 내에서 바이트가 정렬되는 방법을 의미하지만, 일반적인 의미는 더 큰 데이터 항목의 표현 내에서 개별적으로 주소 지정 가능한 하위 구성 요소의 순서를 나타냅니다 ( Wikipedia에서 설명 ).


5
그것이 올바른 방법 내내 그래서 아,하지만 시작 작은 엔디안 lilliputians는 거의 마지막에 알을 (금)
JK.

4
-1 : 엔디안은 바이트 내의 비트가 아니라 워드 내의 바이트를 나타냅니다.
kdgregory

1
@kdgregory-결국, 비트 넘버링은 단어 내에서 영향을받습니다. 다른 엔디 언에 대한 비트 필드 구조체를 사용해 보셨습니까? 그래도 대답이 잘못되었다는 데 동의합니다.
mouviciel

@Kdgregory : 위키에 따르면 , 엔디안이 큰 데이터 항목의 표현 내의 개별적으로 어드레스 부성분의 순서를 의미한다. 이것이 일반적인 경우입니다. 비트 엔디안 이라는 개념도 있습니다. 엔디안을 가장 일반적으로 사용하는 것은 단어 내에서 바이트가 정렬되는 방식을 의미하며 내 예제는이를 반영하지 않습니다. 첫 번째 예를 일반적인 경우로 대체했습니다.
Joonas Pulakka

2
@kdgregory : CS 이론적 개념을 정당화하기 위해 하드웨어가 언제부터 필요한가? 그러나 매우 훌륭합니다. 8051 에는 비트 주소 지정 가능 레지스터가 있습니다. Ada 언어를 사용하면 데이터 형식 표현 ( pdf )에 적절한 비트 순서를 지정할 수 있습니다 . 물론 직렬 매체를 통한 비트의 전송 순서는 비트 엔디안을 정의해야합니다. "엔디안 (endianness)" 의 일반적인 사용은 특별한 경우 (바이트 단위)를 의미한다고해서 일반적인 의미를 무효화하지는 않습니다.
Joonas Pulakka

33

내 팁 :

  • 빅 엔디안 = 빅 엔드! (첫번째 바이트 (가장 낮은 주소)는 MSB입니다)
  • 리틀 엔디안 = 리틀 엔드! (첫번째 바이트 (가장 낮은 주소)는 LSB입니다)

3
예, 이것이 제가 생각하는 방식입니다. Big Endian은 "BIG 끝에서 시작"하고 Little Endian은 "작은 끝에서 시작"입니다. 그것은 야구 방망이와 같습니다. 방망이의 양쪽 끝이 있습니다. 하나는 크고, 다른 하나는 작습니다. 정말 어려운 개념이 아닙니다.
Shane Kilkelly

6

이것을 기억하는 가장 좋은 방법은 문명화 된 사람들이 다양성을 찾아서 주문한 것과 다르게 계란을 먹는 것입니다. 우리는 큰 자릿수부터 큰 자릿수 (big endian)로 시작하는 십진수를 쓰는 반면, 작은 끝 (little endian)에서 부드러운 삶은 계란을 먹습니다.


1
이 답변은 대부분 비 기술적이지만 완전히 정확하여 웃었습니다. 잘 했어.

6

빅 엔디안 숫자는 "빅 엔드"에서 시작합니다. 리틀 엔디안 숫자는 "little end"에서 시작합니다.

둘 다 걸리버 여행에 따라 계란을 어디에서 먹어야하는지에 대한 암시입니다.

이 경우, "끝"은 시작의 반대가 아니며, 단지 (로프 | 열) 극단을 의미하므로 "큰 피니셔"또는 "리틀 피니셔"(명백히 "시작"의 반대).


과연. 가장 기억하기 쉬운 방법은 걸리버 여행을 읽고 읽는 것입니다. 나는 당신이 다시 어느 것을 잊지 않을 것이라고 보장합니다!
Jules

"식사 시작"을 굵게 표시해야합니다 (또한 72pt, <blink>). 이것이 혼동을 일으키는 모든 이유입니다.
T Nierath

2

내가 기억하는 가장 쉬운 방법은“endian”이라는 단어를“startian”으로 바꾸는 것입니다. 빅 스타디 언 정수는 빅 엔드로 시작하고 (예 : 최상위 바이트가 우선), 리틀 스타디 언 정수는 작은 끝으로 시작합니다 (예 : 최하위 바이트가 우선).


startian을 /'stɑːr.ʃən/ 또는 /'stɑːr.ti.ən/ 으로 발음 해주십시오 (비
Rhotic

이것은 매우 영리하고 기억하기 쉽습니다.
Coldblackice

1

나는 "big-endian"과 "little-endian"을 기억할 수 없었지만 PowerPC와 Intel x86 프로세서의 endianness를 알고있었습니다. 거의 대부분의 문자가 인텔과 공통되므로 Intel x86은 리틀 엔디안입니다.

물론 PPC와 x86의 바이트 순서를 알고있는 경우에만 유용합니다. 한편, 이제 Intel x86 = little-endian이라는 것을 기억해야합니다. 그리고 x86과 ARM은 완전히 다른 명령어 세트와도 매우 호환됩니다.


1

나는 이것을 이렇게 썼다 : 큰 것이 아름답다!

큰 == 아름다운 == 맞습니다.
올바른 endianess는 16 진 덤프에서 읽을 수있는 것입니다. 이것은 16 진 덤프에서 읽을 수있는 것입니다.

작은 == 못생긴 == 잘못되었습니다.
이 endianess에 의해 생성 된 hexdumps는 "Brains!"를 외치며 도망 치기에는 너무나 명백합니다. 어쩌면 이것은 일종의 외계인 혐오증 일 수 있습니다. 우리는이 천체의 기원에 대해서만 추측 할 수 있습니다. 그럼에도 불구하고, 그것은 존재하며 우리는 그것에 갇혀 있습니다.

Pitty, 항상 레이스를 만드는 최고의 변종은 아닙니다 ...


Little == ugly == wrong... "심지어 가장 작은 사람이 미래의 진로를 바꿀 수 있습니다"-Galadrial, 반지의 제왕
Coldblackice

-1

빅 엔디안에서 : (오름차순)

낮음에서 높음

0 | 1 | 2 | 3 ^ ^ 시작 끝

리틀 엔디안에서 : (내림차순)

높음에서 낮음

3 | 2 | 1 | 0 ^ ^ 시작 끝


1
이 질문은 어느 것을 기억할 수있는 실용적인 방법을 요구했다.
gnasher729
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.