Operatori di manipolazione del bit
ho questo programma
#include
using namespace std;
int main() {
int i, j;
cout << "Inserisci un intero: ";
cin >> i;
cout << "Inserisci un altro intero: ";
cin >> j;
cout << "i|j = " << (i|j) << endl;
cout << "i&j = " << (i&j) << endl;
cout << "i^j = " << (i^j) << endl;
cout << "~i = " << (~i) << endl;
cout << "i<<2 => " << (i<<2) << endl;
cout << "i>>2 => " << (i>>2) << endl;
return 0;
}
Ho capito perfettamente perchè inserento due interi es( 10,24)
ottengo i &j= 0, i<<2=40, i>>2=2
quello che non rieso a capire è perchè i|j=26 ne perchè i^j=18 invece a me da 34 ne perchè ~i mi da 11
mi potete aiutare?
Grazie in anticipo
#include
using namespace std;
int main() {
int i, j;
cout << "Inserisci un intero: ";
cin >> i;
cout << "Inserisci un altro intero: ";
cin >> j;
cout << "i|j = " << (i|j) << endl;
cout << "i&j = " << (i&j) << endl;
cout << "i^j = " << (i^j) << endl;
cout << "~i = " << (~i) << endl;
cout << "i<<2 => " << (i<<2) << endl;
cout << "i>>2 => " << (i>>2) << endl;
return 0;
}
Ho capito perfettamente perchè inserento due interi es( 10,24)
ottengo i &j= 0, i<<2=40, i>>2=2
quello che non rieso a capire è perchè i|j=26 ne perchè i^j=18 invece a me da 34 ne perchè ~i mi da 11
mi potete aiutare?
Grazie in anticipo
Risposte
NOTA: dovrebbe essere i&j=8 nel tuo esempio.
Basta vedere la rappresentazione binaria dei numeri nei tuoi esempi (uso 8 bit):
$i=10_d=00001010_b
$j=24_d=00011000_b
Basta vedere la rappresentazione binaria dei numeri nei tuoi esempi (uso 8 bit):
$i=10_d=00001010_b
$j=24_d=00011000_b