Итак, с двумя целочисленными значениями это довольно просто. Я могу сделать что-то вроде:
Код: Выделить всё
int mask = 50; //Right bits will have 50
mask |= (25 > 16));
Console.WriteLine("Right is: {0}", (mask & 0xFFFF));
Так в чем вопрос?
Теперь я хочу использовать ту же технику, но хочу сохранить два нецелых числа. Например, 1,5 и 1,75 или 2,00 и 2,25. .NET, похоже, не поддерживает операторы сдвига битов в числах с плавающей запятой, одинарном, двойном или десятичном. Кроме того, мне также нужно будет прочитать эти значения в конечном итоге в Javascript, поэтому сомнительно, что любая битовая кодировка с плавающей запятой будет полностью совместима между платформами.
Как лучше всего это сделать? Один из подходов, который я рассматриваю, - это просто использовать целые числа, но делить все на 1000. Это дало бы мне точность до 3 десятичных знаков в обоих числах, хотя мне пришлось бы хранить все это как long, чтобы сохранить что-либо больше 65. Хотя я не уверен, что это лучший подход. Возможно, я что-то упускаю.
Подробнее здесь: https://stackoverflow.com/questions/114 ... le-integer
Мобильная версия