Pergunta

Eu estava lendo algum tutorial de montagem no qual havia explicado os números inteiros assinados e os números inteiros não assinados e a diferença entre sua representação na memória do computador.

Lembro -me de algo assim que houve um pouco no começo no número, para que ele diga se o número inteiro não é assinado ou assinado.

Se alguém souber, por favor responda.

Foi útil?

Solução

Página da Wikipedia na Representação do número assinado mostra as implementações de memória mais comuns dos valores inteiros assinados e não assinados.

Complemento de dois é a representação mais comum.

Outras dicas

Existem muitas representações possíveis de números assinados, o mais comum é complemento de dois.

O MSB não determina se o número é assinado ou não; Em números assinados, representa se o número é negativo. Em números não assinados, é apenas o MSB. É o programa que determina se um número é considerado assinado ou não assinado.

ele Ele. questão capciosa. Os números inteiros assinados e não assinados são representados exatamente iguais. Olhando para a memória, você nunca será capaz de distingui -los. Isso sai de um dos princípios de von Neumann. Então, onde está a diferença? A diferença está na maneira como eles são interpretados. Se a variável for assinada, o compilador usa comandos para ints assinados. Além disso, se soubermos que esse número está assinado, o primeiro bit nos diz que é o sinal. a conversão é feita como ~i + 1 (S sintaxe) em ambos os lados

Existem muitas representações possíveis, cada uma dependendo do seu organização do computador. Os mais famosos são

Nas duas representações, você pode testar o primeiro bit (mais significativo) para descobrir se o número é positivo (geralmente desativado) ou negativo (bit on). Isto é, se você tratar o número como assinado. Se você disser ao compilador para tratar números como não assinados, o bit de sinal será usado como dados (que dobram o máximo variar para o tipo de dados).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top