Podpisano na niepodpisane i odwrotnie (arytmetyczne)

Jak przekonwertować numer z niepodpisanego na podpisany?

podpisano: -32768 do 32767 bez znaku: 0 do 65535

Rozwiązuję problem w JavaScript. Sytuacja jest taka, że ​​mam numer, który idzie np. od 0 do 65535 i chcę przekonwertować go na rozsądną wartość podpisaną.

np .: 65535 powinien wynosić -1.

Proszę nie używać żadnych operacji związanych z bitami, ale coś arytmetycznego.

Myślę, że powinno to być niezależne od języka, zakładając, że używamy wystarczająco dużego typu danych.

Aktualizacja: Wdrożenie zgodnie z dalszą odpowiedzią:

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