Исследование возможности использования побитового сравнения для оценки того, какие опции были выбраны из возможных 100 вариантов.Поразрядное сравнение больших чисел
теперь как целое число для выбора всех параметров потребовало бы хранения целого числа от 2 до мощности 99 (6E29). путь за пределом около 9E18.
так же, как с разрешениями доступа (1 = чтение, 2 = запись, 4 = выполнение) 1 + 2 + 4 = 7 = полный доступ.
Я хотел бы знать, какой из 100 вариантов был выбран одним и тем же методом.
Любые советы/советы, которые были высоко оценены.
NB хранения будет MySQL
- EDIT -.
Конечной целью здесь является упрощение проверки относительно того, что валюты пользователь может быть оплачена в
присваивая значения валюты как так:
Currency OptVal
GBP 1
USD 2
EUR 4
AUD 8
CAD 16
ZAR 32
и так далее (там много много валюты и больше будет возникать через криптографические валюты, я уверен)
тогда было бы удобно, чтобы проверить, какие валюты пользователь, используя битовые операторы ...
так что если пользователь имел настройки валюты в размере 3 только GBP и USD. 5 GBP & EUR 63 GBP, USD, EUR, AUD, CAD, ZAR
и так далее - надеюсь, что это проясняет цели.
Проблема заключается в том, чтобы сделать это в самой упрощенной форме хранения этого целого числа, когда у вас есть> 100 валют. вам нужно значение 2E (n-1) для каждой опции, а для большого n это число очень велико и не может быть сохранено в виде целого числа (максимальное значение BIGINT - 18446744073709551615)
100 бит могут быть представлены 4 x 32-битными ints –
, поэтому в основном число опций/32 - это число int, необходимое для представления этой опции? сравнение будет битами, установленными на любом из 4-х целых чисел? –