所謂飽和運算,就是當運算結果大於一個上限或小於一個下限時,結果就等於上限或是下限。例如:BYTE運算,最大值是255,0xF1+0x35應該是等於0x126,但由於結果大於255,那么飽和運算的結果就是0xFF。在圖像處理里經常有(比如說增加亮度)兩種灰度值運算後要判斷值是否大於255或小於0,根據結果再取255或0,又是if又是什麼的。現在只要一條指令就OK了。
這幾條指令分別是:
PADDS[B,W] 飽和有符號數加[byte, word]
PADDUS[B,W] 飽和無符號數加[byte, word]
PSUBS[B,W] 飽和有符號數減[byte, word]
PSUBUS[B,W] 飽和無符號數減[byte, word]
是不是很方便啊!(有符號數就是有正有負,一個BYTE就是-128~127;無符號數就是都是正的,一個BYTE就是0~255)
註:PADDS[B,W]的意思就是PADDSB和PADDSW的簡寫,以下都將這樣寫。