Лучший способ сделать битовые манипуляции / неподписанные байты - использовать int s. Несмотря на то, что они подписаны, у них есть много свободных битов (всего 32), которые можно рассматривать как неподписанный байт. Кроме того, все математические операторы преобразуют меньшие числа с фиксированной точностью в int . Пример:
short a = 1s;
short b = 2s;
int c = a + b; // the result is up-converted
short small = (short)c; // must cast to get it back to short
Из-за этого лучше всего придерживаться целого числа и маскировать его, чтобы получить интересующие вас биты. Пример:
int a = 32;
int b = 128;
int foo = (a + b) | 255;
Вот еще немного информации о примитивных типах Java http://mindprod.com/jgloss/primitive.html
Последнее тривиальное примечание: в Java есть одно число без знака с фиксированной точностью. Это char примитив.