41.2. АРИФМЕТИКА С НАСЫШЕНИЕМ




THIS SECTION IS UNDER CONSTRUCTION


В отличии от обычного сложения/вычитания в дополнительном коде, когда и signed и unsigned варианты могут делаться одной командой, для saturated арифметики - это совершенно разные команды.


Add Saturated Unsigned




Subtract Saturated Unsigned




Add Saturated Signed



Пример кода на C для 16 бит:
// Saturated Add, sizeof(int) = 2
int	sadd(int a, int b)
{
	int	result;

	result	= a + b;
	if (((a^b) & 0x8000) == 0)
	{
		// same sign
		if ((result^a) & 0x8000)
		{
			// result have different sign, that operand
			result = (a > 0)? 0x8000: 0x7fff;
		}
	}
	return	result;
}


Subtract Saturated Signed




Multiply Saturated Unsigned Low




Index Prev Next