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