Ссылаясь на обозначение для представления с фиксированной точкой, я пытался следовать, но я совсем запутался.
int q = 1<<15;
printf("(sys3.b0 * q) = %hx \n",((0.2929 * q)));
выход
((0.2929 * q)) = cc60
Я ожидаю увидеть 257d, потому что из калькулятора 0.2929 * 32768 in hex = 257d
В чем проблема использовать этот формат Q.15, или это только из-за неправильной печати
РЕДАКТИРОВАТЬ
Ребята, на самом деле я никогда не думал об этом.
Мой фактический код пытается напечатать два значения. Я думал, что печать второго значения - это проблема. После комментариев @Soren я скопировал его код и работает. Затем я удалил 1-е значение из printf, мой код также сработал. Итак, я публикую оператор printf
printf("(sys3.b0 * q) = %X \t((0.2929 * q)) = %X\n",(sys3.b0 * q),(unsigned)((0.2929 * q)));
printf("(sys3.b0 * q) = %X \n",((unsigned)(0.2929 * q)));
где вторая строка предложена Сероном.
The value of sys3.b0 = 0.0000000001295
Теперь выход
(sys3.b0 * q) = 4DB173CF ((0.2929 * q)) = 3ED1CC60
(sys3.b0 * q) = 257D