--- 빅 endian 바이트 순서가 작은 끝을 알 수있다

Benpian는 것입니다 무엇을, 왜, 어떻게 세 가지 차원 엔디안에 대한

엔디안 바이트 문자 이해 (바이트) 연속하는 복수 바이트의 구조 (또는 변수 파일 등) 컴퓨터 과학 협약 은 현재로 분할 빅 엔디안리틀 엔디안

A의  uint32_t . 예를 들면 4 바이트 타입, 0x12345678은 가변형에 저장된다 관점에서 변수는 상위 바이트 변수는 0x12, 0x78로 하위 바이트 변수이다.

가변 때  높은  바이트의 메모리에 저장되어있는    주소 가변  로우  바이트가 메모리에 저장되어  낮은  어드레스 인 경우 엔디안은 아래와 같이

 

가변 때  높은  바이트가 메모리에 저장되어있는  로우  어드레스 가변  로우  바이트의 메모리에 저장되어있는    A와 어드레스 때 빅 엔디안, 아래와 같이

 

정의는 단순히 물론, 직접 메모리의 동의하지만, 왜 이러한 규칙은해야? 왜 두 바이트 시퀀스로 나누어? 이점은 무엇입니까?

객체의 두 가지 유형의 두 가지 종류의 바이트 순서가 빅 엔디안을  위한 것입니다  인간 , 리틀 엔디안을  위한 것입니다  컴퓨터 .

빅 엔디안 사람이 읽을 수있는 다이어트, 처리 부하가 인간 줄일 수있다 그래서, 바이트 스트림을 읽는 습관 처리에 따라 정의, 네트워크 바이트 순서는 빅 엔디안 사용하면 네트워크 소켓입니다 다중 비트 번호를 송신 할 때, 판독 습관에 따라, 수신 된 상위 바이트의 수는 8, 따라서 직접 왼쪽 추가.

리틀 엔디안 순서로 처리를 컴퓨터에 부합

        1. 컴퓨터가 읽기 전용 메모리 주소의 순서에 따라, 형식 상관 없어 데이터를 읽고

        우리가 컴퓨터 데이터 처리라는 낮은 주소에서 우리가 기대하는 것을 취할 활성이 낮은 주소의 메모리 주소에 변수 데이터를 낮출 필요가 있으므로 2. 데이터 낮은에서 처리 전산화 된 데이터는,이, 컴퓨터 디자인의 정의입니다 시작합니다. 누적 운전 시간, 비트 부가 비트 피드 CF2는 할 열을 순차적으로 최종 결과를 축적했다.

요약하면, 인간 중심의 빅 엔디안 순서는 처리 속도를 높이기 위해 사고, 리틀 엔디안 중심의 컴퓨터를 단순화합니다.

 

어떻게

방법을 결정하기 위해 컴퓨터가 빅 endian 혹은 little endian인가?

당신은 단순히 C 언어 프로그램의 판단 기간을 만들 수 있습니다

#include <cstdio>
#include <cstdint>

int main()
{
	uint32_t test_code = 0x12345678;
	uint8_t* first = (uint8_t*)&test_code;  //指针指向变量的内存首字节

	printf("first address value is %x,is %s\n", 
			*first, *first == 0x12 ? "Big Endian" : "Little Endian");
	return 0;
}

당신은 출력을 볼 수 있습니다

가변 test_code (낮은 메모리 어드레스)의 첫 번째 메모리 주소에, 결과는 0x78로 추출 하였다 (가변 로우 어드레스)에 대한 최초의 포인터는 리틀 엔디안에서와 같이 상기 정의한

 

출력을 보려면 직접뿐만 아니라, 우리는 여기에 사용, 저장하는 방식의 메모리를보고 직접 볼 수 올리 디버그 올리 디버그가 exe 파일을 열 사용하여 프로그램 디버그 모드 출력 위의 디버그 EXE 파일 :

모든 문자열을 마우스 오른쪽 검색 프로그램은 간단한 암호화 프로그램이 아니기 때문에 주로 찾을 여기에 문자열의 printf, 그것은 전화로 장소를 쉽게 찾을 수 있습니다 :

직접 변수 덤프의 주소를보기

출력 프로그램은 낮은 저장 어드레스 0x78로 높은 스토리지 주소는 0x12, 따라서 리틀 엔디안으로하고있다.

 

사실, 컴퓨터는 리틀 엔디안, 리틀 엔디안 바이트 순서 컴퓨터가 변화해야하는 경우, 해당 컨트롤 레지스터 설정을 설정 한 목적을 달성하기 위해 바이트 순서를 변경, 언제나 바이트 순서를 기억할 수있는, 단지 기본적으로 필요는 없다 규칙의 종류.

 
게시 19 개 원래 기사 · 원 찬양 7 · 전망 6934

추천

출처blog.csdn.net/G_METHOD/article/details/104131628