Использование умножения и деления одного и того же числа в коде - PullRequest
1 голос
/ 07 мая 2020

Я наблюдал этот код строки ниже в сгенерированном MATLAB файле C.

Variable_x= (T_S16) ((((T_S32) varibale_y) * 13107) >> 13);

Если 13107 сдвигается влево 13 раз, тогда он становится 1.

* 1005 умножения 13107 и деления же нет?

1 Ответ

3 голосов
/ 07 мая 2020

Это не «умножение и деление одного и того же числа».
Это умножение числа на 13107 и деление этого произведения на 8192 - соотношение 1,5999755859375.

Согласно предложению @ Eugene Sh. , это определенно масштабирование целого числа примерно на 1,6 с использованием целочисленной математики.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...