Advertisement
Guest User

Untitled

a guest
Jan 17th, 2020
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.71 KB | None | 0 0
  1. #include <stdio.h>
  2. int invert(int numero,int posizione,int numeri);
  3. int nBi(int num);
  4. int nBi(int num){
  5. int i;
  6. while(num!=1){
  7. num=num/2;
  8. i++;
  9. }
  10. return i+1;
  11. }
  12. int invert(int numero,int posizione,int numeri){
  13. int variabileApp,variabileApp2,variabileApp3,variabileApp4,variabileApp5,variabileApp6,nBit;
  14. nBit=nBi(numero);
  15. variabileApp=(numero>>(posizione+1-numeri))&~(~0<<numeri);
  16. variabileApp=variabileApp<<((posizione+1)-numeri);
  17. variabileApp=~variabileApp;
  18. variabileApp=(variabileApp>>(posizione+1-numeri))&~(~0<<numeri);
  19. variabileApp=variabileApp<<((posizione+1)-numeri);
  20. if(((posizione+1)-numeri)==(nBit-(posizione+1))){
  21. variabileApp2=numero>>posizione+1;
  22. variabileApp2=variabileApp2<<posizione+1;
  23. variabileApp3=variabileApp2>>posizione+1;
  24. printf("%d\n",variabileApp3);
  25. }
  26. else{
  27. variabileApp2=numero>>posizione+1;
  28. variabileApp2=variabileApp2<<posizione+1;
  29. variabileApp3=variabileApp2>>nBit-(posizione+1)+numeri;
  30. printf("%d\n",variabileApp3);
  31. }
  32. variabileApp4=variabileApp3|variabileApp2;
  33. variabileApp5=variabileApp|variabileApp4;
  34. return variabileApp5;
  35. }
  36. int main()
  37. {
  38. int numero,posizione,numeri,invertit;
  39. printf("Inserisci un numero: ");
  40. scanf("%d",&numero);
  41. printf("Ok, ora inserisci la posizione da cui inizia l'invertimento: ");
  42. scanf("%d",&posizione);
  43. printf("Ora inserisci quanti bit da convertire a partire dalla posizione p: ");
  44. scanf("%d",&numeri);
  45. invertit=invert(numero,posizione,numeri);
  46. printf("I bit del numero %d inveriti dalla posizione %d fino a %d numeri uguale a %d",numero,posizione,numeri,invertit);
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement