대부분의 사람들이 알고 있듯이 (바이트 주소 지정 가능) 하드웨어 메모리는 little-endian 과 big-endian의 두 가지 범주로 나눌 수 있습니다 . 리틀 엔디안 메모리에서 바이트는 작은 (최하위) 끝에서 0으로 시작하고 다른 한편으로는 빅 엔디안에서 바이트로 번호가 매겨집니다.
재미있는 사실 :이 용어는 요나단 스위프트 의 책 걸리버 여행 (Gulliver 's Travels)을 기반으로 Lilliputian 왕이 시민들에게 계란을 끊기 위해 명령을 내렸고 (반도의 엔디 언들) 반란군이 큰 결말을 깨뜨릴 것이라고 말했습니다.
스와핑 작동 방식
12648430
다음과 같이 보일 수있는 빅 엔디안 시스템에서 메모리에 부호없는 정수 (32 비트)가 있다고 가정 합니다.
addr: 0 1 2 3
memory: 00 C0 FF EE
바이트 순서를 반대로함으로써 10 진수 인 16 진 정수 0xEEFFC000
를 얻을 수 4009738240
있습니다.
당신의 작업
부호없는 32 비트 정수를 10 진수로 받고 엔디 언을 교체 할 때 결과 정수를 출력하는 프로그램 / 함수를 작성하십시오.
규칙
- 입력은 항상 범위에있을 것입니다
0
에4294967295
- 출력은 STDOUT으로 인쇄하거나 (줄 바꿈 개행 / 공간이 양호 함) 반환 할 수 있습니다
- 입력과 출력은 10 진수입니다
- 유효하지 않은 입력에 대한 동작은 정의되지 않은 상태로 남아 있습니다.
테스트 사례
0 -> 0
1 -> 16777216
42 -> 704643072
128 -> 2147483648
12648430 -> 4009738240
16885952 -> 3232235777
704643072 -> 42
3735928559 -> 4022250974
4009738240 -> 12648430
4026531839 -> 4294967279
4294967295 -> 4294967295
42
십진수로 표시되지만 기술적으로는 C에서 이진수로 표시됩니다. 물론 type 0x2a
을 피할 수 있습니다. 입력을 문자열 등으로 입력 "2a"
하는 것입니다.