Подписано без подписи и наоборот (арифметическое)
Как преобразовать число из неподписанного в подписанное?
подписано: от -32768 до 32767 без знака: от 0 до 65535
Я решаю проблему в JavaScript. Ситуация такова, что у меня есть номер, который идет, например, от 0 до 65535, и я хочу преобразовать его в разумное значение со знаком.
например: 65535 должно стать -1.
Пожалуйста, не используйте операции с битами, а делайте что-то арифметическое.
Я предполагаю, что это не должно зависеть от языка, если предположить, что мы используем достаточно большой тип данных.
Обновление: Реализация в соответствии с ответом ниже:
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;
}