Saturační aritmetika

Z HPM wiki
Přejít na: navigace, hledání

Sčítání proměnných typu unsigned char obvykle funguje pro malá čísla normálně, například 12+34=46, a pro velká přeteče, například 250+10=4. To vede u obrazu či zvuku ke znatelné chybě. Saturační aritmetika místo takového výsledku použije největší zobrazitelné číslo, tedy třeba 250+10=255. Podobně jsou při odečítání nahrazeny příliš malé výsledky nulou. Rozsah je tedy 0..255 a pokud z něj výsledek vybočuje, zůstává na mezi rozsahu.

Pro typ signed char je rozsah výsledků omezen do intervalu -128..127.

Saturační aritmetika tedy pracuje různě s čísly typu signed a unsigned a existují pro tyto případy rozdílné instrukce, třeba PADDSB a PADDUSB. Naproti tomu běžná aritmetika dělá s bity v obou případech úplně stejné operace, třeba při instrukci PADDB. Dík vlastnostem doplňkového kódu je totiž například 254+1=255 a -2+1=-1 úplně stejné zpracování bitů, totiž 11111110+00000001=11111111.

Osobní nástroje
Jmenné prostory
Varianty
Akce
Navigace
Nástroje