简单的举个例说:
B=17
C=18
A=B*C (可以是其它公式)
那么A=306 但是在下一步计算将要使用A,并且A不能大于200或是负数,不然会发生溢出错误。
往下一步计算是:
u16 Data[200]
Data[A] 明显A作为数组Data下标是不能大于200。
再例如:
u8 B=170
u8 C=180
u8 A=B+C (可以是其它公式
那么A=350 但是作为u8的A不能大于255或是负数,不然会发生溢出错误。
饱和运算就让A在发生溢出时强制使A不超出我们定义的安全范围,类似于电路的稳压管、钳位管。
我一直用条件运算做饱和判定不过速度较慢,STM32是有硬件的“饱和运算”,但我也不知道怎么用。
|