Если вам действительно нужно значение точно с 16 битами:
Решение 1: Используйте доступное подписанное короткое замыкание и перестаньте беспокоиться о знаке, если только вам не нужно делать сравнение (<, <=,>,> =) или деление (/,%, >> ) операции. См. этот ответ , чтобы узнать, как обрабатывать числа со знаком, как если бы они были без знака.
Решение 2 (где решение 1 не применимо): Используйте младшие 16 битов int и удалите старшие биты с помощью & 0xffff, где это необходимо.