Assembly/Rappresentazione dati/Numeri positivi e negativi

Wikibooks, manuali e libri di testo liberi.
Assembly
modifica
  • IntroduzioneAssembly/Introduzione
  • Rappresentazione datiAssembly/Rappresentazione dati
  • Algebra Booleana
  • Organizzazione di sistema (tanta noiosa teoria)
    • Componenti base di sistema
    • Il tempo del Sistema
    • La famiglia 80x86
    • Input/Output
  • Organizzazione e accesso alla memoria
    • Introduzione
    • Organizzazione della memoria in un x86
    • Organizzazione dei segmenti in un x86
    • Indirizzi di memoria in un x86
    • Registri di segmento in un x86
    • Metodi di indirizzamento di un x86
    • L'istruzione MOV
    • Commenti finali sull'istruzione MOV
  • ConvenzioniAssembly/Convenzioni
Indice

Fino ad ora abbiamo parlato di numeri unsigned. Quando si lavora con i bit, non esistono i comodi segni "+" e "-" che usiamo nel sistema decimale.

Torniamo indietro nel tempo..... Abbiamo detto che un numero binario è composto da infinite cifre. A sinistra di ogni numero binario, si trovano infiniti 0.
Questo tipo di numero binario è positivo. Per trasformarlo in negativo facciamo così (Es: 1101 = 13):

  • Invertiamo tutti i valori usando NOT. NOT ...000000000001101 = ...111111111111110010
  • Si somma 1 al valore ottenuto. ...111111111110010 + 1 = ...1111111111110011.

...11111111110011 è il valore binario negativo per "13".

Per trasformare un numero negativo in positivo si fa invece così:

  • Si invertono tutti i valori con NOT. NOT ...11111111110011 = ...00000001100.
  • Si aggiunge 1. ...00000001100 + 1 = ...000000001101
  • Siccome gli 0 a sinistra del valore non hanno significato diventa 1101 = 13
Modulo precedente

Operazioni di shift su bits

Torna a

Assembly

Modulo successivo

Campi di bit e Packed Data