饱和运算

转自 http://baike.baidu.com/view/1547769.htm?fromTaglist


  所谓饱和运算,就是当运算结果大于一个上限或小于一个下限时,结果就等于上限或是下限。例如:BYTE运算,最大值是255,0xF1+0x35应该是等于0x26,但由于结果大于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的简写,以下都将这样写。

你可能感兴趣的:(Asm)