Win a copy of Kotlin in Action this week in the Kotlin forum!
programming forums Java Java JSRs Mobile Certification Databases Caching Books Engineering OS Languages Frameworks Products This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
Sheriffs:
Saloon Keepers:
Bartenders:

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