2015-04-24 2 views
0

У меня есть немой вопрос, и я смущен даже спросить. Из-за моих небольших знаний в математике я не мог понять, что мне искать.XOR умножение и порядок арифметических операций

Я имею дело со следующим уравнением:

[(a*x)^b]*c=d

где ^ обозначает XOR и * для Умножение.

Как я могу выделить x?

+1

Собственно, это зависит. Какова алгебраическая структура, в которой вы это делаете? Если они являются битвекторами фиксированной ширины, то деление не является обратным умножению. – harold

ответ

3
[(a*x)^b]*c=d 
[(a*x)^b]=d/c 
(a*x)^b^b=(d/c)^b //double xor with b retrieves initial value 
(a*x)=(d/c)^b 
x = ((d/c)^b)/a 
+0

Ну, не нормальные алгебраические средства, но если вы достаточно коварны, вы знаете трюк, чтобы обойти проблему: D –

+0

Большое спасибо! замечательно. решил мою проблему :) – CodeNinja

0

на основе свойств исключающего справедливо следующее:

A xor A = 0 
B xor 0 = B 

Плюс, это коммутативной. Остальное - это математическая математика.