Цитата(Elf @ Dec 15 2009, 17:56)

{
u8 a, b, c, d;
a = 0x22;
b = ~a >>4;
c = ~a;
d = c >>4;
}
Что за определение u8?
В примере с переменной b: ~a дает результат unsigned int 0xFFFFFFDD. А потом сдвиг и обкусывание до 8 бит.
В примере c переменными c и d приведение осуществляется каждый раз. Вот и всё.
ИМХО честно будет так: b = ( ~a & 0xFF ) >> 4;
Это по крайней мере однозначно.
Родной быстрый тип для ARM - int, который содержит 32 бита. Предположу, что портируете с восьмибитника?