Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- int invert(int numero,int posizione,int numeri);
- int nBi(int num);
- int nBi(int num){
- int i;
- while(num!=1){
- num=num/2;
- i++;
- }
- return i+1;
- }
- int invert(int numero,int posizione,int numeri){
- int variabileApp,variabileApp2,variabileApp3,variabileApp4,variabileApp5,variabileApp6,nBit;
- nBit=nBi(numero);
- variabileApp=(numero>>(posizione+1-numeri))&~(~0<<numeri);
- variabileApp=variabileApp<<((posizione+1)-numeri);
- variabileApp=~variabileApp;
- variabileApp=(variabileApp>>(posizione+1-numeri))&~(~0<<numeri);
- variabileApp=variabileApp<<((posizione+1)-numeri);
- if(((posizione+1)-numeri)==(nBit-(posizione+1))){
- variabileApp2=numero>>posizione+1;
- variabileApp2=variabileApp2<<posizione+1;
- variabileApp3=variabileApp2>>posizione+1;
- printf("%d\n",variabileApp3);
- }
- else{
- variabileApp2=numero>>posizione+1;
- variabileApp2=variabileApp2<<posizione+1;
- variabileApp3=variabileApp2>>nBit-(posizione+1)+numeri;
- printf("%d\n",variabileApp3);
- }
- variabileApp4=variabileApp3|variabileApp2;
- variabileApp5=variabileApp|variabileApp4;
- return variabileApp5;
- }
- int main()
- {
- int numero,posizione,numeri,invertit;
- printf("Inserisci un numero: ");
- scanf("%d",&numero);
- printf("Ok, ora inserisci la posizione da cui inizia l'invertimento: ");
- scanf("%d",&posizione);
- printf("Ora inserisci quanti bit da convertire a partire dalla posizione p: ");
- scanf("%d",&numeri);
- invertit=invert(numero,posizione,numeri);
- printf("I bit del numero %d inveriti dalla posizione %d fino a %d numeri uguale a %d",numero,posizione,numeri,invertit);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement