Documente Academic
Documente Profesional
Documente Cultură
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 10 (cu "depăşire")
Ultimul rând de mai sus se citeşte: "Unu plus unu este egal cu unu-zero (în
baza 2)", valoarea lui 10(2) fiind desigur 2(10).
Pe baza tablei de mai sus se pot aduna oricare 2 numere binare A şi B.
Exemplu (se începe de la dreapta):
1
Scăderea
Scăderea în sistemul binar funcţionează foarte asemănător cu adunarea
binară. Tabla scăderii este:
0 - 0 = 0
0 - 1 = 1 (cu "împrumut")
1 - 0 = 1
1 - 1 = 0
Pe această bază se pot scădea numere binare formate din mai multe 0-uri şi 1-
uri. Operaţia se execută poziţie cu poziţie, de la dreapta la stânga. La
nevoie se foloseşte "împrumutul" de la poziţia de mai la stânga. De exemplu:
0 x 0 = 0
0 x 1 = 0
1 x 0 = 0
1 x 1 = 1
Sistemul hexazecimal
Sistemul hexazecimal are baza 16 şi utilizează 16 cifre hexazecimale,
care se notează astfel: 0 1 2 3 4 5 6 7 8 9 A B C D E F.
În acest şir de cifre hexazecimale, cifrele de la 0(16) la 9(16) au
valorile zecimale echivalente, de la 0(10) la 9(10), iar cifrele A(16) ... F(16) au
valorile zecimale de la 10(10) la 15(10).
Pentru reprezentarea valorilor zecimale de la 0 la 15 sunt necesari
exact 4 biţi, începînd cu 0000 şi sfârşind cu 1111. Transformarea unui număr
binar într-unul hexazecimal se face prin gruparea biţilor în grupe de câte 4
biţi, de la dreapta la stînga.
Exemplu:
Transformarea inversă, din hex în bin, se face prin înlocuirea fiecărei cifre
hex prin combinaţia corepunzătoare de 4 biţi.
Pentru conversia unui număr real din baza 10 în baza 16, se analizează
separat partea întreagă şi partea zecimală.
Exemplu:
3
Probleme propuse:
#include<iostream>
using namespace std;
void main()
{
int a, b, x;
cout<<"Introduceti a : "; cin>>a;
cout<<"Introduceti b : "; cin>>b;
x=a; a=b; b=x ;
cout<<"Valoarea lui a devine : "<<a<<endl;
cout<<"Valoarea lui b devine : "<<b<<endl;
}
#include<iostream>
using namespace std;
void main()
{
int a,b;
cout<<"Introduceti a : "; cin>>a;
cout<<"Introduceti b : "; cin>>b;
a=a-b;
b=a+b;
4
a=b-a;
cout<<"Valoarea lui a devine : "<<a<<endl;
cout<<"Valoarea lui b devine : "<<b<<endl;
}
***************************
Următorul algoritm calculează cel mai mare divizor comun şi cel mai mic
multiplu comun a două numere naturale, nenule, a şi b, citite de la
tastatură. Algoritmul are două variante: prin împărţiri repetate şi prin
scăderi repetate.
#include<iostream>
using namespace std;
void main()
{
int a, b, r, x, y;
cout << "Programul calculeaza c.m.m.d.c. si c.m.m.m.c a doua numere
date" << endl;
cout << "Introduceti primul numar : ";
cin >> a; x=a;
cout << "Introduceti al doilea numar : ";
cin >> b; y=b;
while(b!=0) {
r=a%b; // calculeaza restul impartirii lui a la b
a=b;
b=r;
}
cout << "c.m.m.d.c al numerelor "<< x << " si " << y << " este : " << a
<< endl;
cout << "c.m.m.m.c al numerelor "<< x << " si " << y << " este : " <<
x*y/a << endl;
}
#include<iostream>
using namespace std;
5
void main()
{
int a, b, x, y;
cout << "Programul calculeaza c.m.m.d.c. si c.m.m.m.c a doua numere
date" << endl;
cout << "Introduceti primul numar : ";
cin >> a; x=a;
cout << "Introduceti al doilea numar : ";
cin >> b; y=b;
while (a!=b) {
if(a>b)
a=a-b;
else
b=b-a;
}
cout << "c.m.m.d.c al numerelor "<< x << " si " << y << " este : " << a
<< endl;
cout << "c.m.m.m.c al numerelor "<< x << " si " << y << " este : " <<
x*y/a << endl;
}