simon kumar

Greenhorn

Posts: 13

Dave Vick

Ranch Hand

Posts: 3244

posted 15 years ago

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

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

Dave

Donald Yee

Greenhorn

Posts: 6

Corey McGlone

Ranch Hand

Posts: 3271

posted 15 years ago

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

Therefore, your final answer is 0xDA.

Happy hexing!

Corey

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

Therefore, your final answer is 0xDA.

Happy hexing!

Corey

Valentin Crettaz

Gold Digger

Sheriff

Sheriff

Posts: 7610

posted 15 years ago

here is a link that might be worth reading:

Javaranch campfire:Cat and Mouse Games with Bits

[ February 22, 2002: Message edited by: Valentin Crettaz ]

Javaranch campfire:Cat and Mouse Games with Bits

[ February 22, 2002: Message edited by: Valentin Crettaz ]

SCJP 5, SCJD, SCBCD, SCWCD, SCDJWS, IBM XML

[Blog] [Blogroll] [My Reviews] My Linked In