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;
}