Bitwise AND operation backwards

  • Thread starter Thread starter Mc_Topaz
  • Start date Start date
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
3 replies · 3K views
Mc_Topaz
Messages
1
Reaction score
0

Homework Statement



At my company we calculate a product's serial number from a MAC address provided with the unit. One of the equations is done with a bitwise AND operation of two integers. I have tried to run that equation backwards but with no result.

Variables and data:

V = The source value to do the bitwise AND operation with
C = A known constant to use in the bitwise AND operation
S = Result of bitwise AND operation

Let say: V = 10, C = 6

Homework Equations



The equation forward is: V & C = S => 10 & 6 = 2

In binary:

1010 = 10
0110 = 6
-----
0010 = 2


Now I just want to reverse that process and calculate 10 from 6 and 2 in some way.

Don't try with: C + 2S (6 + (2*2)) works just in this case.

The Attempt at a Solution



I tried the opposite way by changing V for S:

2 & 6 = 2

In binary:

0010 = 2
0110 = 6
-----
0010 = 2


The problem occurs when one of the bits in the V is 1 and the equivalent bit in C is 0. The bit in S will then be 0 and V's bit can never return to 1.

Any suggestions?

/Mc_Topaz
 
Physics news on Phys.org
Unfortunately that's just not possible as it's a many to one mapping. Of the three main two input binary operators (AND OR XOR) only XOR is invertible like that.
 
It would be possible if you also knew V & ~C, though. Since A & B only has ones where both A and B have ones, and ~B has ones only where B has zeros, V & ~C has the 'missing ones' from the other calculation.
 
Strants said:
It would be possible if you also knew V & ~C, though. Since A & B only has ones where both A and B have ones, and ~B has ones only where B has zeros, V & ~C has the 'missing ones' from the other calculation.

Actually "V" is the thing he's trying to find (given S and C). Knowledge of ~C provides no new information and doesn't help with the original problem. Since he knows C then he already knows ~C anyway.
 
Last edited: