long converted = onebyte; // gives you -85
и если вы сдвинете его 8 раз влево, это даст вам ровно -21760, потому что при преобразовании в long самый левый бит используется в качестве знакового бита.
long converted = onebyte & 0xFF; //gives you 171
, а если Вы сдвигаете его 8 раз влево, и это дает вам 43776
, потому что при использовании побитового и байтового, короткого и char сначала преобразуются в int, а затем выполняется побитовая операция.
11111111111111111111111110101011 //byte 0xAB casted to int
00000000000000000000000011111111 //0xFF is an int literal
00000000000000000000000010101011 //bitwise and operation
после побитового и с 0xFF бит знака удаляется