Я пишу программу переменного тока.У меня есть целое число без знака (16 бит), значение которого может быть любым в любое время, и у меня есть символ со знаком (8 бит), значение которого может быть любым в любое время, в пределах очевидных ограничений типов данных.Мне нужно добавить подписанный символ к целому без знака, результатом будет неподписанное целое, и если значение переполняется либо за 0xFFFF, либо ниже 0x00, мне нужен результат, равный пределу (0x00 или 0xFFFF).Я хочу знать, что будет самым быстрым подходом к этому?Мой подход показан ниже, но он использует длинный тип данных и, следовательно, длинную двоичную арифметику, поэтому я предполагаю, что есть более быстрый способ ...
long i;
unsigned int result;
i = someUINT + someCHAR;
if(i <= 0)
{
result = 0;
}
else if(i >= 0xFFFF)
{
result = 0xFFFF;
}
else
{
result = (unsigned int)i;
}
РЕДАКТИРОВАТЬ: я использую 16-битный MCU (серия PIC24HJ) и компилятор Microchip C30.