Bitovsko ogledalo
Bitovsko ogledalo je proces u kojem se redosled bitova broja obrće, tj. najviši bit postaje najniži, drugi po redu bit postaje drugi od kraja i tako dalje.
Ulaz
Napisati funkciju unsigned bitovsko_ogledalo(unsigned x) koja obrće zapis broja x. Testirati funkciju pozivom u main-u. Broj x se unosi sa standarnog ulaza.
Izlaz
Na standarni izlaz ispisati binarnu reprezentaciju broja x i novodobijnog broja.
Primer 1
Ulaz
255
Izlaz
00000000000000000000001001010101
10101010010000000000000000000000
Primer 2
Ulaz
-15
Izlaz
11111111111111111111111111101011
11010111111111111111111111111111
Rešenje
main.c
#include <stdio.h>
void stampaj_bitove(unsigned x)
{
unsigned mask = 1 << (sizeof(int)*8-1);
while(mask){
mask & x ? printf("1") : printf("0");
mask >>= 1;
}
putchar('\n');
}
unsigned bitovsko_ogledalo(unsigned x)
{
unsigned mask = 1 << (sizeof(unsigned)*8 - 1);
unsigned mask1 = 1;
unsigned resenje = 0;
while(mask1){
if (mask1 & x)
resenje = resenje ^ mask;
mask >>= 1;
mask1 <<= 1;
}
return resenje;
}
int main()
{
int x;
scanf("%x", &x);
unsigned k = bitovsko_ogledalo(x);
stampaj_bitove(x);
stampaj_bitove(k);
return 0;
}