Como não é assinado int/há muito tempo
-
24-09-2019 - |
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.
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).