simon kumar
Greenhorn
Posts: 13
Hi,
can anyone tell me what is the simplest way to calculate 0x67^0xBD,the result is 0xDA
simon

Dave Vick
Ranch Hand
Posts: 3244
Simon
The ^ operator is the 'exclusive or' that operates on the individual bits of the operands. In the example you gave
0x67^0xBD
The way to do it is to convert the hex into binary. I have to go through decimal to do it
0x67 is 103 in decimal and 0xBD is 189, in binary they are (remember that ints are 4 bytes):
00000000 00000000 00000000 01100111
00000000 00000000 00000000 10111101
the results of your 'exclusive or' are:
00000000 00000000 00000000 11011010
which equates to: 218 in decimal or 0xDA in hex.
Remember the ^ means that the result is one if one, but not the other, of the bits is a 1.
hope that helps

Donald Yee
Greenhorn
Posts: 6
Easiest way is to convert to binary.
0x67 = 0110 0111
^ 0xBD = 1011 1101
------------------
1101 1010 = 0xDA

Corey McGlone
Ranch Hand
Posts: 3271
Originally posted by simon kumar:
Hi,
can anyone tell me what is the simplest way to calculate 0x67^0xBD,the result is 0xDA
simon

Convert to binary!
Every hexadecimal number is equivalent to 4 bits. Therefore, you can convert from hex to binary very easily.
0x67 = 01100111
0xBD = 10111101
Now, just XOR the bits:
0x67^0xBD = 11011010
Then, convert back to hex:
1101 = D
1010 = A