Я думаю, у меня проблема, здесь char - это знак со знаком (216), но знак со знаком может хранить значение между (-128,127), что означает 216 (11011000). Наиболее значимый бит равен 1, то есть это отрицательныйчисло, которое комплимент 2 составляет 00101000, что эквивалентно -40
, когда вы делаете это значение | = bytes [1];
в этом случае фактически вы принимаете ИЛИ 256, -40
(256 | -40) равно -40