Во-первых, все типы Java int
, short
и byte
подписаны, а не подписаны. Во-вторых, когда вы приведете Java int
к short
и т. Д., Вы получите тихое усечение.
Вопрос, имеет ли это значение, зависит от природы алгоритма контрольной суммы. Если это простая сумма, или побитовый алгоритм, есть хороший шанс, что алгоритм будет хорошо работать, если реализован с помощью целых чисел со знаком Java. Например, эти «отрицательные» 16-битные контрольные суммы могут быть правильными, если они интерпретируются чем-то, ожидающим значения без знака.
С другой стороны, семантика умножения и деления такова, что варианты со знаком и без знака должны обрабатываться отдельно. (По крайней мере, это то, что я делаю из ненаучного подхода к просмотру набора команд x86 ... в котором есть отдельные инструкции для умножения и деления со знаком и без знака.)
РЕДАКТИРОВАТЬ Я понимаю, что вы рассчитываете CRC-16. Поскольку это можно вычислить с помощью сдвига и XORing, при вычислении не должно быть беспокойства относительно чисел со знаком или без знака.
Короче, вам не о чем беспокоиться.