Разделение 24-битного значения на пару 12-битных полей выглядит как правильный подход. Для двух 12-битных полей используемый здесь формат с плавающей точкой, начиная с крайнего левого бита:
один знаковый бит (0 для положительного, 1 для отрицательного) [116 ]
пять экспонентных битов, давая значение без знака, которое смещено на 15 (поэтому мы должны вычесть 15 из значения без знака этого поля, чтобы получить фактический показатель степени)
шесть битов значащих и дают значение без знака
Абсолютное значение числа с плавающей запятой, выраженное в этом формате, будет определяться как:
significand * ( 2 ^ exponent ) / ( 2 ^ 6 )
[1110 ] Для приведенных примеров у нас есть:
0011 0110 0011 =>
sign bit = 0, positive
exponent field = 01101, which is decimal 13, so actual exponent = 13 - 15 = -2
significand = 100011, which is decimal 35
value = positive 35 * ( 2 ^ -2 ) / ( 2 ^ 6 ) = 0.13672
1001 0011 0101 =>
sign bit = 1, negative
exponent field = 00100, which is decimal 4, so actual exponent = 4 - 15 = -11
significand = 110101, which is decimal 53
value = negative 53 * ( 2 ^ -11 ) / ( 2 ^ 6 ) = -0.0004044
Вы можете подтвердить комментарий о точности этого формата, повторив эти вычисления со значениями и значениями, которые были увеличены на единицу.
Создайте новый файл "Настроек" для добавления сложного/пользовательского предпочтительного типа. Вот практическое руководство для Перечисления.
Шаг 1. Создайте файл Настроек
Шаг 2. Обзор для типа
Шаг 3. Выберите тип (Пространство имен. TypeName)
Шаг 4. Ta da - Сделанный
При выполнении его в отдельном файле, поскольку часть частичного класса полностью приемлема.
Если бы Вы хотите смочь заполнить сложные объекты через конфигурационные файлы, я предложил бы использовать некоторую Dependency Injection Framework s.a. Spring. Сеть.
Чтобы пользовательский класс отображался в этом списке , убедитесь, что он имеет конструктор по умолчанию в качестве одного из вариантов построения. Я усвоил это на собственном горьком опыте