Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- void numarParitate (int x)
- {
- //verificare daca un numar e par sau impar
- if (x&1)
- printf("x este impar");
- else
- printf("x este par");
- }
- void problema1Lab3 ()
- {
- int x;
- //Afisarea reprezentarii pe biti a unui numar.
- printf("\nIntroduceti o valore pentru x.\n");
- scanf("%d",&x);
- int a=1;
- a=a<<8; // pe cati biti se face reprezentarea.
- while(a)
- {
- if (x&a)
- printf("%d",1);
- else
- printf("%d",0);
- a=a>>1;
- }
- }
- void problema2Lab3 ()
- { // n - bit, x - nr
- int x;
- printf("\nIntroduceti o valore pentru x.\n");
- scanf("%d",&x);
- int n;
- printf("Numarul x este %d. Introduceti bitul n. \n",x);
- scanf("%d",&n);
- //punctul a: Sa se afiseze bitul n din x
- int xA=x;
- xA=xA>>n;
- printf("\npunctul a): bitul n\n%d \n",xA&1);
- // punctul b): numărul x în care se seteaza bitul n
- int xB=x;
- printf("punctul b): nr x in care se seteaza bitul n \n");
- int bitB=1;
- bitB = bitB << n;
- xB = xB | bitB;
- printf("%d \n",xB);
- // punctul c): numărul x în care se șterge bitul n
- int xC=x;
- printf("punctul c): numarul x in care se sterge bitul n \n");
- int bitC=1;
- bitC = bitC << n;
- // metoda 1 if ((xC & bitC) == bitC)
- // xC = xC - bitC;
- xC = xC & (~bitC);
- printf("%d \n",xC);
- // punctul d): numărul x în care se complementeaza bitul n
- int xD=x;
- printf("punctul d): numarul x in care se complementeaza bitul n \n");
- int bitD=1;
- bitD = bitD << n;
- xD = xD ^ bitD;
- printf("%d \n",xD);
- }
- void problema3Lab3()
- {
- int x,y,n,p; // p - pozitia p din x; n - ultimii n biti din y
- printf("Introduceti valorea pentru x si y, in ordine. Apoi introduceti si p - pozitia din x si n - ultimii biti din y. \n");
- scanf("%d %d", &x,&y);
- scanf("%d %d", &p, &n);
- int div=pow(2,n);
- int nBits=y%div;
- nBits = nBits << p;
- x = x + nBits;
- printf("Valorea noului x este... %d", x);
- }
- void problema4Lab3()
- {
- //Scrieți un program care primește ca input de la tastatură scrierea unui număr în baza 2 și
- //calculează direct scrierea acestuia în baza 16 (nu mai trece prin baza intermediară 10)
- int x,v[100]={0},i=0,nr;
- printf("Introduceti un numar scris in baza 2.\n");
- scanf("%d",&x);
- while (x)
- {
- nr=x%10000;
- printf("nr= %d \n",nr);
- int putere=0;
- while (nr)
- {
- v[i] = v[i] + (nr%10)*pow(2,putere);
- putere++;
- printf("v[%d] = %d \n",i,v[i]);
- nr/=10;
- }
- i++;
- x/=10000;
- }
- for (i=7; i>=0; i--)
- if (v[i]<10)
- printf("%d ",v[i]);
- else
- switch (v[i])
- {
- case 10:
- printf("A");
- break;
- case 11:
- printf("B");
- break;
- case 12:
- printf("C");
- break;
- case 13:
- printf("D");
- break;
- case 14:
- printf("E");
- break;
- case 15:
- printf("F");
- break;
- }
- }
- int main()
- {
- int nr;
- printf("Alegeti numarul problemei. (1,2,3,4)\n");
- scanf("%d",&nr);
- switch (nr)
- {
- case 1:
- problema1Lab3();
- break;
- case 2:
- problema2Lab3();
- break;
- case 3:
- problema3Lab3();
- break;
- case 4:
- problema4Lab3();
- break;
- default:
- printf("Nu ati introdus o optiune valida.");
- return;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement