1. Sprawdź ile bitów potrzeba do zapisu liczby, np. tak:
int ileBitow(int liczba)
{
int a=1;
while(pow(2,a)<=liczba)
a++;
return a;
}
2. Sprawdzaj kolejno bit z końca i początku przechowując ich numery z zmiennych, zmienne odpowiednio inkrementuj(numer poczatkowego bitu) i dekrementuj (numer koncowego) i porównuj je tak długo jak numer koncowego bita jest wiekszy od poczatkowego, np.
bool Sprawdz(int liczba)
{
int ileBitow=IleBitow(liczba);
int p=0,k=ileBitow-1;// pierwszy bit ma numer 0 ostatni to ilosc bitow -1
while(p<k)
{
if(bool(liczba&(1<<p)) != bool(liczba&(1<<k)))
return false;//dwa lustrzane bity się różnią, zwracamy FALSE
p++;
k--;
}
return true;//p (poczatek) jest wiekszy od k (konca) czyli porownalismy juz wszsytkie bity i skoro doszlo do tego momentu to nie różniły się w lustrzanym odbiciu
}
Musisz to zaopatrzec w sprawdzenie czy zmienna nie jest ujemna, wtedy sytuacja sie zmienia, bo o ile w 8 bitach zapiszesz dowolną liczbę od 0 do 255 (uint8_t czyli 8bitowy typ liczby naturalnej) o tylko ujemną już tylko od -128 czyli zmienia nam to pojemność o połowę -1 (dla int8_t). Dla typu int8_t potrzebujesz do zapisu 127 8 bitów ale do 128 już 9 bitów, natomiast -128 możesz zapisać w 8. Mam nadzieję, że w miarę wyjaśniłem :)