Rotiranje bitova ulevo
Pod rotiranjem bitova ulevo podrazumeva se pomeranje svih bitova za jednu poziciju ulevo, s tim što se bit sa pozicije najveće težine pomera na poziciju najmanje težine.
Ulaz
Sa standardnog ulaza učitati neoznačene cele brojeve x i n koji se unose u heksadekasnom formatu.
Izlaz
Ispisati binarnu reprezentaciju vrednosti dobijene pozivanjem funkcije za rotaciju ulevo sa argumentima x i n.
Primer
Ulaz
ba11a7
5
Izlaz
0010111010000100011010011100000
Rešenje
main.c
#include <stdio.h>
unsigned rotiraj_ulevo(unsigned x, unsigned n){
unsigned bit_najvece_tezine;
unsigned maska_bit_najvece_tezine = 1 << (sizeof(x)*8 -1);
for(int i=0;i<n;i++){
bit_najvece_tezine = x & maska_bit_najvece_tezine;
x = x << 1 | (bit_najvece_tezine ? 1 : 0);
}
return x;
}
void stampaj_bitove(unsigned x){
unsigned velicina = sizeof(x)*8;
unsigned maska_bit_najvece_tezine = 1 << (velicina -1);
while(maska_bit_najvece_tezine!=0){
putchar(x & maska_bit_najvece_tezine ? '1' : '0');
maska_bit_najvece_tezine >>= 1;
}
putchar('\n');
}
int main(void)
{
unsigned x,n;
scanf("%x", &x);
scanf("%x", &n);
unsigned rezultat = rotiraj_ulevo(x,n);
stampaj_bitove(rezultat);
return 0;
}