Assinado como não assinado e vice-versa (aritmético)

Como converter um número de não assinado para assinado?

assinado: -32768 a 32767 sem assinatura: 0 a 65535

Estou resolvendo o problema em JavaScript. A situação é que tenho um número que vai, por ex. de 0 a 65535 e quero convertê-lo em um valor assinado razoável.

por exemplo: 65535 deve se tornar -1.

Por favor, não use nenhum bit relacionado a operações, mas algo aritmético.

Eu acho que isso deve ser independente de linguagem, assumindo que usamos um tipo de dados que é grande o suficiente.

Atualização: Implementação de acordo com a resposta mais abaixo:

function convertWordToShort(ival) {
    if (isNaN(ival) === false) {
        if (ival > 32767) {
            ival = ival - 65536;
        }
    }
    return ival;
}
function convertShortToWord(ival) {
    if (isNaN(ival) === false) {
        if (ival < 0) {
            ival = ival + 65536;
        }
    }
    return ival;
}
function convertIntToDWord(ival) {
    if (isNaN(ival) === false) {
        if (ival < 0) {
            ival = ival + 4294967296;
        }
    }
    return ival;
}
function convertDWordToInt(ival) {
    if (isNaN(ival) === false) {
        if (ival > 2147483647) {
            ival = ival - 4294967296;
        }
    }
    return ival;
}

questionAnswers(1)

yourAnswerToTheQuestion