Будет ли это дополнение всегда производить уникальный номер? - PullRequest
0 голосов
/ 14 декабря 2018

Я не знаю, как исчерпывающе протестировать следующее без грубой форсировки, поэтому я просто спрошу, верна ли концепция.

У меня есть две 64-битные переменные типа unsigned int, которые используются обекак битовые поля.Обе переменные могут иметь до 60 бит, от 1 до 60.Может быть установлено любое количество из 60 битов, и они могут быть установлены в любом порядке.биты 61, 62 и 63 не устанавливаются ни в одну из переменных.Кроме того, одна и только одна из переменных всегда имеет установленный 64-й бит.

Учитывая приведенное выше описание, я прав, полагая, что хэш будет уникальным для всех возможных комбинацийполе1 и поле2?:

uint64_t field1 = ...;
uint64_t field2 = ...;
uint64_t hash   = field1 + field2;

1 Ответ

0 голосов
/ 14 декабря 2018

Нет.Простой пример:

0b0011 + 0b0100 = 0b0111
0b0010 + 0b0101 = 0b0111

Невозможно предоставить уникальный хэш длины n для всех пар значений с длиной n.Обратите внимание, что существует около 2^60 * 2^60 = 2^120 комбинаций, поэтому 2^60 хэши не могут вместить их всех.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...