Re: Dspic30f4011 Saturation 問題。

作者 jason680 於 2019年03月17日 14:57:59
不是很懂,你在說什麼...

查了 Saturation是飽和,又看了內容...
大概猜了一下,你應該要問的,可能是...
應該是溢位問題(overflow)...

0. 基本上...
long = int * int 需要 5個cycle
int = int * int 需要 3個cycle
才差2個cycle,再加判斷,也省不了什麼時間...

1. 溢位
加法溢位有快速檢查方法...
乘法效果可能有限...
C = A * B
C是否超過int最大值,只討論正整數
用int_max代表(16bits為32767)
if( B > int_max / A )
  C = int_max; // over flow
else
  C = A * B;
註: 因為html排版問題,加了中文空白...
註: A或B其中有一個固定(不變)的話...
int_max/A可以先算好

來自: http://www.microchip.com.tw/newbb/viewtopic.php?forum=2&topic_id=22571&post_id=79372