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