03.07.2015, 10:25. Просмотров 2038. Ответов 34
Hi

Есть два числа, допустим: int a и int b, как можно их "сопряч", то есть что - то с ними сделать, что бы получить третье число, уникальное для любого набора этих А и B. Причём порядок следования A и B так же важен.
То есть есть два числа:
1. Первое число (допустим типа int)
2. Второе число (допустим типа int)
Нужно получить любой третье число, допустим int c, которое бы не повторяется для любых других комбинаций и последовательностей исходных чисел.
Да, и самое главное, нужно это сделать с минимальным кол-вом операций, т.к. эти вычисления производятся очень и очень часто (миллиарды раз в секунду)
Казалось бы, что может быть проще:
int a = 3;
int b = 7;
взял, да умножил: int c = a * b = 3 * 7 = 21, но, если будет комбинация наоборот:
int a = 7;
int b = 3;
результат будет тот же, а исходные данные поменялись... И т.д. и тп.
Я пока вижу, как можно сделать это в три действия:
но тут лишнее действие на мой взгляд...
может быть есть какая то хитрая процессорная инструкция для быстрого преобразования подобных вещей?
Может быть хитрый XOR или ещё что - то ?