[Tecnica] Visualizzare un numero in complemento a due

Marco Slack mrkslack a gmail.com
Gio 22 Gen 2009 19:23:49 GMT


Il giorno 22 gennaio 2009 19.07, Michele O-Zone Pinassi
<o-zone a zerozone.it>ha scritto:

> Ciao a tutti,
> domanda per i cervelloni (io non riesco a venirne fuori !). Ho un DS1631
> collegato, via I2C, al PIC 18F4455. Il DS1631 mi restituisce la temperatura
> in 12-bit complemento a due. Praticamente io ho un array di due byte in cui
> il most significant byte mi rappresenta la parte intera, con il MSB ad 1 se
> negativo o 0 se positivo, mentre il least significant byte contiene la
> parte
> decimale. Un esempio (dal datasheet del DS1631):
>
> 0111 1101 0000 0000 (7d00h) = +125°C
> 0001 1001 0001 0000 (1910h) = +25.0625 °C
> 0000 0000 1000 0000 (0080h) = +0.5 °C
> 0000 0000 0000 0000 (0000h) = 0 °C
> 1111 1111 1000 0000 (FF80h) = -0.5 °C
> 1110 0110 1111 0000 (E6F0h) = -25.0625 °C
> 1100 1001 0000 0000 (C900h) = -55 °C
>


sembra che i primi 8 bits most significant rappresentino il valore intero
della temperatura,
mentre il nibble seguente (4 bits) e' relativo alla parte frazionaria:
avendo solo 16 valori possibili
ogni bit vale 1/16 (0.0625 °C)


adesso vorrei riuscire a visualizzare anche i decimali :-) ma non riesco
> assolutamente a capire come funziona questa storia del complemento a due.
>
> se ricordo bene il complemento a 2 si ottiene facendo il complemento a 1
(gli 1 diventano 0 e viceversa)
ed aggiungendo 1.

+5 = 00000101 (compl.1)-> 11111010 + 1 (compl.2)-> 11111011 = -5

-- 
Marco Dei
GNU/Linux Registered User #407088 counter.li.org

Elsaglug www.elsaglug.org
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: http://liste.siena.linux.it/pipermail/tecnica/attachments/20090122/210abcd4/attachment.htm 


Maggiori informazioni sulla lista Tecnica