Cześć,
W sieci znalazłem takie zadanie:
char A[]={1,2,3,4,5,6,7,8,9};
cout << *((short*)A + 2)
Podane liczby całkowite zostaną zapisane w pamięci bez żadnych fajerwerków, tzn:
A[0] = 00000001
A[1] = 00000010
A[2] = 00000011 itd...
Natomiast kiedy wypisuję sobie reprezentacje binarną po rzutowaniu na short, to otrzymuję:
short* ptr = (short*)A;
ptr[0] = 00000010 00000001
ptr[1] = 00000100 00000011
I teraz moje pytanie: Myślałem, że rzutując na short, który ma 16 bitów będą się na niego składały bajty po kolej, idąc od A[0], A[1], A[2], A[3] i ten wskaźnik każde kolejne dwa bajty będzie łapał i łączył, czyli:
A[0]A[1] = 00000001 00000010
A[2]A[3] = 00000011 00000100
A bity są połączone odwrotnie:
A[1]A[0] = 00000010 00000001
A[3]A[2] = 00000100 00000011
Mógłby mi ktoś wytłumaczyć czemu tak się dzieje??
Pozdrawiam