2013년 7월 22일 월요일

Big Endian 과 Little Endian

Big Endian 과 Little Endian
이상하게 들리겠지만, 정수들에 대해 2진 표현을 사용하는 서로 다른 컴퓨터 플랫폼들이, 동일한 수를 서로 다르게 나타낼 수 있다. 예를 들어, Intel 기종의 컴퓨터들은 Little Endian 방식으로 바이트를 저장한다. 그러나 Motorola 컴퓨터, RISC 기반의 MIPS 컴퓨터, DEC Alpha 컴퓨터 등은 Big Endian 방식으로 바이트를 저장한다.
(RISC 기반의 MIPS 컴퓨터와 DEC Alpha 컴퓨터는 두 저장 방식 중 어느 한 가지를 선택할 수 있다.)

Big Endian과 Little Endian이라는 용어는 "Big End In"과 "Little End In"을 의미한다고 생각 할 수 있다. 이들은 메모리의 한 워드(word)에 바이트들이 저장되는 순서를 설명하는 용어이다.
Little Endian 저장 방식을 사용하는 Intel 컴퓨터는 낮은 바이트가 먼저 저장된다. 즉, 16진수 0xABCD는, 메모리에 0xCD 0xAB의 순서로 저장된다. 그와 반면에 Big Endian 저장 방식을 사용하는 Motorola 시스템은, 동일한 값을 그와 반대 순서로 저장한다. 따라서 16진수 0xABCD, 메모리에 0xAB 0xCD의 순서로 저장된다.

조나단 스위프트의 책 < 걸리버 여행기 >가 이 용어들의 원천적인 소스이다. 스위프트는, 소인국 릴리퍼트에서 논쟁하기 좋아하는 두 정치적 당파 즉, 달걀의 둥근 부분을 깨야 한다고 주장하는 Big Endian들과 달걀의 뾰족한 부분을 깨야 한다고 주장하는 Little Endian들을 만들어 냄으로써, 많은 정치적 논쟁의 비합리성을 풍자했다.

소프트웨어 엔지니어는 자신이 작성하는 프로그램을 동작시킬 플랫폼에서 하나의 워드가 어떤 순서로 저장되는지 알고 있어야 한다. 무엇보다도, 그것은 네트워크를 통해 전송받은 데이터를 해석하는 데 영향을 주고, 2진 파일에 데이터가 저장되는 방식에 영향을 준다. 앞의 예제에서, 2바이트 메모리 패턴인 0xABCD는, Littme Endian 시스템에서 10진수 52651로 해석된다. Big Endian시스템에서 이것은 10진수 43981로 해석된다.

출처 - C++기초플러스 5판

x86 프로세서는 리틀 엔디언 순서로 메모리에서 데이터를 저장하고 꺼낸다.
이 순서에서는 변수의 최하위 바이트가 변수의 (최하위의)시작 주소에 저장된다.
출처 - x86 프로세서를 위한 어셈블리언어

2013년 7월 8일 월요일

D3DXMatrixRotationYawPitchRoll( yaw, pitch, roll )



D3DXMatrixRotationYawPitchRoll( yaw, pitch, roll )

yaw, pitch, roll 의 단어들은 무슨 뜻일까?

Normal axis (yaw) > 수직축 or Y축






Lateral axis (pitch) > 가로축 or X축











Longitudinal axis (roll) > 세로축 or Z축



출처
http://en.wikipedia.org/wiki/Aircraft_principal_axes



참고할만한 사이트
http://blog.naver.com/mirzzz79/110014895772