Можно использовать номера с фиксированной точкой, и все еще часто можно найти их во встроенном коде или оборудовании.
Их использование идентично целым числам, но вам нужно указать, где находится ваша «точка».Например, предположим, что вам нужно 3 бита после точки и что ваши данные имеют размер 8 бит, биты 7..3 - это целая часть (слева от «точки»), а биты 2..0 - дробная часть.Интерпретация целочисленной части, как обычно, представляет собой двоичное разложение этого целого числа: биты 3 соответствуют 2 0 , биты 4 - 2 1 и т. Д.
Длядробная часть, разложение в отрицательных степенях или два.биты 2 соответствуют 2 -1 , биты 1 - 2 -2 и биты 0 - 2 -3 .
Так что для вас проблема, 5.5 = 4 + 1 + 1/2 = 2 2 + 2 0 + 2 -1 и его код 00101 (.) 100.Точно так же 2,125 = 2 + 1/8 и его код 00010 (.) 001 (примечание (.) - всего лишь помощь в понимании кодирования).
На самом деле они просто целые числа, но вы должны учитывать, что все ваши числа умножены на 2 -3 .Это не повлияет на сложение, но результаты умножения и деления должны быть скорректированы.Принятие во внимание положения точки и управление переполнением и недостаточным количеством является сложностью арифметики с фиксированной точкой, но она позволяет выполнять дробные вычисления, даже если ваше оборудование не обеспечивает поддержку с плавающей запятой (например, с микроконтроллерами низкого уровня или системами FPGA).
Два дополнения похожи на целые числа, и его вычисления идентичны.Если код 2.125 равен 00010 (.) 001, то -2.125 == 11101 (.) 111.Операции как обычно.
+5 00101(.)100
-2.125 11101(.)111
00011(.)011
и 00011 (.) 011 = 2 + 1 + 1/4 + 1/8 = 3375
Для записи первое использование в двух дополнениях было для дробных чисел с фиксированной запятой идва дополнения имя происходит от этого.Если дробное число, если оно представлено, скажем, 0 (.) 1100000 (0,75), его отрицательная противоположная часть будет 1 (.) 0100000 (-0,75 или 1,25, если интерпретируется как без знака), и мы всегда имеем x + (без знака) -x =2.Для этого кодирования отрицательное значение дробного числа x - это число y, которое должно быть добавлено к x, чтобы получить 2, отсюда и название того, что y является дополнением 2 к x.