본문 바로가기

C언어/강의

2010년 10월 14일 목요일 (포인터 & little endian)


address

 

952

953

M

956

957

 

 

 

L

960

961

K

964

965

 

J

I

968

969

H

972

971

G

976

977

F

980

981

E

984

983

D

988

987

C

992

993

B

996

997

A

1000

1001

메모리 (4byte)

address


int A;   // 4byte
int B;   // 4byte
int C;   // 4byte
int D;   // 4byte
float E; // 4byte
float F; // 4byte
float G; // 4byte
float H; // 4byte
short I; // 2byte
char J;  // 1byte
int *K;  // 4byte
char L;  // 1byte
char *M; // 4byte                  

시작 주소가 4byte이기 때문에 






12345678이란 숫자가 있다고 치고 메모리를 보면

12

34

56

78

Little Endian ☜ 산술 연산이 빠름 (인텔CPU)[78563412 로 뒤짚어 저장]

78

56

34

12

Big Endian ☜ 논리 연산이 빠름

12

34

56

78

 

char A=-1;

1

1

1

1

1

1

1

1

char B=0xFF;

1

1

1

1

1

1

1

1

char C=255;

1

1

1

1

1

1

1

1

(signed) int D=C; (부호확장)

1

1

1

1

1

1

1

1

1

~

1

1

~

1

1

1

1

1

1

1

1

1

unsigned int E=C; (제로확장)

0

0

0

0

0

0

0

0

0

~

0

0

~

0

1

1

1

1

1

1

1

1