Я думаю, что все основные архитектуры поддерживают нагрузки из памяти с расширением знака и нулевым расширением. x86, ARM и MIPS определенно имеют такие инструкции по загрузке. Старые архитектуры и примитивные микроконтроллеры, особенно 8-битные и 16-битные, могут не иметь таких инструкций и, следовательно, могут требовать нескольких инструкций для достижения того же результата. Если вы не упоминаете их, вам, вероятно, все равно. Итак, просто напишите переносимый код C / C ++ и покончите с этим.