reprezentacja liczby w pamięci

0

Mam za zadanie sprawdzić czy dana liczba całkowita jest zapisana w pamięci od najstarszego czy od najmłodszego bitu. Nie do końca wiem jak się do tego zabrać, ale spróbowałem wyświetlić liczbę binarnie. Napisałem do tego taki kod:

int main(){
	signed short int a = 2221;//przykładowy typ i wartość

	for (int i = sizeof(a)*8; i > 0; i--){//dla każdego bitu liczby
		cout << (a & 1)? 1: 0;//wypisz bit
		a >>= 1;//przesuń o 1 bit w prawo
	}

	return 0;
}

I teraz niby wyświetla liczbę w odwrotnej kolejności bitów... nie wiem czy to świadczy o tym jak te liczby są reprezentowane? Czy może do tego zadania jakoś inaczej trzeba podejść. Nie do końca wiem czy operator & porównuje mi najmłodszy bit czy skrajnie prawy. Jeśli skrajnie prawy to "jestem w domu", jeśli zaś najmłodszy to chyba ten kod nic nie wnosi.

Proszę o jakąś wskazówkę

0

To znaczy że źle do tego podchodzisz... Przecież nie sprawdzasz jak liczby są reprezentowane tylko sprawdzasz po kolei podzielność tej liczby przez potęgi dwójki od najwyższej - jasne że wypisze odwrotnie...

Założę się że chodziło o kolejność bajtów (little endian vs big endian):

#include <stdio.h>

int main()
{
    unsigned int a = 0x12345678;
    unsigned char *b = (unsigned char*)&a;

    for(int i = 0; i < sizeof(a); i++)
    { printf("Bajt %d: %.2x\n", i, *b); b++; }

    return 0;
}
0

Dzięki wielkie za pomoc:) przydało się

1 użytkowników online, w tym zalogowanych: 0, gości: 1