Bitwise AND operation backwards

  • Thread starter Thread starter Mc_Topaz
  • Start date Start date
Click For Summary
SUMMARY

The discussion centers on the challenges of reversing a bitwise AND operation to retrieve the original integer value, V, given a known constant C and the result S. The equation V & C = S, where V = 10, C = 6, and S = 2, illustrates that while the operation can be performed forward, reversing it is not feasible due to the many-to-one nature of the AND operation. Participants concluded that without additional information, such as V & ~C, it is impossible to uniquely determine V from S and C.

PREREQUISITES
  • Understanding of bitwise operations, specifically AND
  • Familiarity with binary number representation
  • Knowledge of the properties of binary operators
  • Basic algebraic manipulation skills
NEXT STEPS
  • Research the properties of XOR and its invertibility in binary operations
  • Learn about the implications of many-to-one mappings in bitwise operations
  • Explore the concept of bitwise negation (~C) and its relevance in calculations
  • Study practical applications of bitwise operations in programming languages like Python or C++
USEFUL FOR

This discussion is beneficial for software developers, computer scientists, and anyone interested in understanding the limitations of bitwise operations in data manipulation and retrieval.

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:

Similar threads

  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 10 ·
Replies
10
Views
2K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 9 ·
Replies
9
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 1 ·
Replies
1
Views
950
  • · Replies 2 ·
Replies
2
Views
11K
  • · Replies 1 ·
Replies
1
Views
1K
  • · Replies 3 ·
Replies
3
Views
3K