{ // 디버깅
std::string msg = "디버깅\n";
::OutputDebugStringA(msg.c_str());
}
메모리 값을 읽는 방식
연산 은 cpu 에서 이루어 진다. 즉 메모리 RAM 에서 데이터를 CPU 로 가져와서 이루어진다. (READ) 이때 RAM 에서 데이터 를 읽을때 4byte 정수형이라고 하면 char 4개짜리 인데, [__][__][__][__] 어디서부터 읽어올것인가 앞에서 부터 읽을것인가, 뒤에서부터 읽을것인가? 보통 인간은 512 라는 값이 있다면 왼쪽에 가장 큰값으로 읽는게 보편적 하지만 CPU 도 그럴까? 하면 그건 아닐수도 있다. 메모리에서 정보를 CPU 로 읽어오거나 CPU 에서 메모리로 정보를 담을때에 표현 방법이 다를 수 있다. int a = 0x00112233; 일때 메모리 주소 증가 방향대로 [00][11][22][33] 으로 값을 저장한다면, 이것은 Big Endian 방식이다. 반대로 [33][22][11][00] 으로 값을 저장한다면, 이것은 Little Endian 방식이다. 그러니까 CPU 와 Ram 에서 데이터가 왔다갔다 했을때 읽기 위한 방식이 Endian 이다. intel CPU 는 Little Endian 방식을 채택하고 있다.
디버깅 을 위한 기본 상식, 네트워크 에서 다루는 개념, 빅 엔디안 방식이면 "네트워크 오더" 리틀 엔디안 방식이면 "호스트 오더" 라고 부른다. 그래서 네트워크를 다룰때는 이를 변환하는 작업을 해주어야 한다. 왜 이렇게 되었을까. 원래 빅 엔디안을 사용하던 곳에서 네트워크를 설계하다 보니까 네트워크상에서는 빅 엔디안을 사용했는데, 인텔 같은 경우는 CPU 만들때 리틀 엔디안 방식으로 사용하고 있었다 보니까. 이렇게 나뉘게 되고 변환 작업이 이루어 져야 되기 시작했다.