Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    14

    Calcolo numero binario da decimale negativo

    Salve a tutti, avrei bisogno di capire se per convertire un numero decimale negativo in binario(8bit), posso SEMPRE utilizzare il complemento a due(avendo un numero decimale negativo | 8bit: 256-ndecmessopositivo=x | x convertito in binario=risultato del decimale negativo convertito in binario)? Perchè ho visto che esiste la tecnica in modulo e segno e non ho capito se è una cosa completamente diversa o una "involuzione" del complemento a due...

  2. #2
    Non fare confusione tra cosa è un numero, cosa è una sua rappresentazione e che rappresentazione interna viene usata all'interno dei computer per poterci applicare determinati algoritmi.

    -1010 e -10102 sono due rappresentazioni dello stesso numero, espresse secondo la normale convenzione "umana" per cui si indica il segno seguito dal modulo.

    Dentro ad un computer i byte sono composti da bit il cui significato dipende dagli algoritmi che ci applichi. Il modo più banale per interpretare un byte è come un valore senza segno compreso tra 0 e 255.

    Per poter gestire anche i numeri negativi si possono usare diversi approcci. Una possibilità è "riportare" la rappresentazione che usiamo noi umani nella memoria del computer, usando il bit (ad esempio) più significativo per il segno (1=numero negativo, 0=numero positivo) e gli altri bit per il modulo.

    Questa rappresentazione, per quanto semplice da comprendere (in quanto che mappa direttamente idee che usiamo per fare i conti "su carta"), rende più complessi da implementare diversi algoritmi di base (ad esempio, la somma/differenza di numeri di segno discorde richiede un caso speciale). Inoltre, si introduce un'ambiguità nel caso dello zero (che può essere uno "zero positivo" o "zero negativo" a seconda dello stato del bit più alto, il che complica la logica di confronto).
    Per questi motivi, normalmente nei computer moderni si preferisce rappresentare gli interi negativi in complemento a due (e gli opcode delle CPU lavorano aspettandosi numeri in complemento a due), che, appunto, presentano diversi vantaggi a livello di algoritmi.

    Nota comunque che la rappresentazione con segno esplicito è usatissima per i numeri in floating point (almeno nella loro incarnazione più diffusa), che sono normalmente costituiti da bit di segno + mantissa + esponente (le operazioni tra floating point si implementano con algoritmi più semplici in questa rappresentazione).
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.