Деление. При делении двух чисел с фиксированной запятой сначала необходимо определить (задать) сколько знаков после запятой будет содержать результат
При делении двух чисел с фиксированной запятой сначала необходимо определить (задать) сколько знаков после запятой будет содержать результат. Если результат должен содержать k цифр после запятой, то делимое следует сдвинуть влево k раз. Это относится и к случаю, когда делимое меньше делителя. NNNN.000: NN = NN.MMM (k знаков после запятой), 0.MMM: NN.M = 0.MMMMM, NNNN.000: N.MM = NNN.M и т.д. Пример. разделить 1010 = 0102 на 410 = 1002. (k=2) 1010 00 2:1002 (делимое сдвинули влево два раза) 101000 | 100 100 | 10. 10 2 = 2.510. - 0 - 100 - 0 Алгоритм деления: сравниваем временный результат (ВР) с делителем (Д). Если ВР<Д, то сдвигаем 1 раз влево ВР и делимое как единое целое, а в результат вдвигаем лог.0 в мл. бит. Если ВР³Д, то вычитаем Д из ВР, а затем сдвигаем 1 раз влево ВР и делимое как единое целое, а в результат вдвигаем лог.1 в мл. бит.
временный результат | делимое комментарии 00000000 | 101000 ВР<Д, => сдвигаем (результат - _ _ _ _ _ _ _ _) 00000001 | 01000 ВР<Д, => сдвигаем (результат - _ _ _ _ _ _ _ 0) 00000010 | 1000 ВР<Д, => сдвигаем (результат - _ _ _ _ _ _ 0 0) 00000101 | 000 ВР³Д, => вычитаем и… - 100 | 00000001 | 000 … и сдвигаем (результат - _ _ _ _ _ 0 0 1) 00000010 | 00 ВР<Д, => сдвигаем (результат - _ _ _ _ 0 0 1 0) 00000100 | 0 ВР³Д, => вычитаем и… - 100 | 00000000 | 0 … и сдвигаем (результат - _ _ _ 0 0 1 0 1) 00000000 | ВР<Д, => сдвигаем (результат - _ _ 0 0 1 0 1 0) отсчитываем два знака (k=2) справа у результата и ставим запятую. Получим 10.102 = 2.510. При представлении чисел с фиксированной запятой все разряды ячейки, кроме знакового разряда, если он есть, служат для изображения разрядов числа. Причем каждому разряду ячейки соответствует всегда один и тот же разряд числа. Именно поэтому такое представление получило название с фиксированной запятой, так как фиксируется место запятой перед определенным разрядом (для целых чисел запятая находится после младшего разряда, т.е. вне разрядной сетки). Такая система упрощает выполнение арифметических действий, но сильно ограничивает диапазон чисел, которые можно записать в ячейку при таком представлении.
|