Я хотел бы представить числа в диапазоне [0.0, 1.0] (оптимально, включая обе конечные точки), используя 8-битные слова.
Я хотел бы иметь возможность эффективно умножать их и добавлять /вычитание должно быть оптимально ограничено [0,1], а не переполнением.
Например, если 0xFF будет представлять 1,0, а 0x00 будет представлять 0,0, то умножение должно дать, например,
0x3F (0,247) = 0x7F (0,499) * 0x7F (0,499)
Я нашел https://courses.cs.washington.edu/courses/cse467/08au/labs/l5/fp.pdf, и я думаю, что то, что в документе будет называться U (0,8), соответствует тому, что я ищу,но я не понимаю, как, например, нужно было бы реализовать умножение.
Существует ли библиотека c ++, которая эффективно реализует такой тип данных, или кто-то может указать мне на необходимую математику?
Мне не нужно деление, только умножение, сложение и вычитание