Firmado a Sin firmar y viceversa (aritmético)

¿Cómo convertir un número de no firmado a firmado?

firmado: -32768 a 32767 sin firmar: 0 a 65535

Estoy resolviendo el problema en JavaScript. La situación es que tengo un número que va, por ejemplo, de 0 a 65535 y quiero convertirlo en un valor firmado razonable.

por ejemplo: 65535 debe convertirse en -1.

Por favor, no utilice ninguna operación relacionada con bits, sino algo aritmético.

Supongo que esto debería ser independiente del idioma, suponiendo que usemos un tipo de datos que sea lo suficientemente grande.

Actualización: Implementación según la respuesta más abajo:

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;
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta