Operatori di manipolazione del bit

16chicca90
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

Risposte
Rggb1
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

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.