Programació en ASM del PIC 16F690 amb PICkit 2

Referència Trucs Perifèrics   Recursos CITCEA
Tutorial Exemples Projectes   Inici

Codificació de valors enters en binari

El programador pot decidir si guarda els valors codificats en un byte (vuit bits) o més d'un.

Per guardar els valors negatius, es fa servir el format de complement a 2 que és el que explicarem a continuació.

El complement a 2 d'un byte s'obté complementant tots els bits i sumant 1 al resultat. Vegem un exemple amb el nombre 39 decimal:

                Decimal                 0010 0111                 39                
                Complementem                 1101 1000                                
Sumem 1 1101 1001 -39

Fixem-nos que el valor que correspon al -39 també correspon al 217 i, per tant, cal tenir clar si la nostra variable està guardant valors amb signe o sense signe. Per això hi ha tipus de variables amb i sense signe

Un fet important d'aquesta codificació és que els passos per passar d'un valor negatiu a un positiu són els mateixos:

                Decimal                 1101 1001                 -39                
                Complementem                 0010 0110                                
Sumem 1 0010 0111 39

Cal destacar que tots els números negatius tindran sempre el bit més significatiu (en aquest cas el 7) a 1 i tots els positius el tindran a zero.

La suma de -39 i 39 donarà zero, com era d'esperar:

                -39                 1101 1001                
+ 39 0010 0111
0 1 0000 0000

El bit que hem marcat en verd ja no cap en els vuit bits de la variable i es perd.

És important tenir present que un canvi en el bit més significatiu no només implica un canvi de valor sinó que també suposa un canvi de signe. Per això és convenient que les operacions a nivell de bits es facin sempre amb variables sense signe.

Els valors que podem guardar en un byte són:

Sense signe Amb signe
Binari Decimal Binari Decimal
Valor zero 0000 0000 0 0000 0000 0
Valor positiu de menys valor absolut 0000 0001 1 0000 0001 1
Valor positiu de més valor absolut 1111 1111 255 0111 1111 127
Valor negatiu de menys valor absolut 1111 1111 -1
Valor negatiu de més valor absolut 1000 0000 -128

Els límits segons el número de bytes són:

Sense signe Amb signe
Bytes Bits Mínim Màxim Mínim Màxim
1 8 0 255 -128 127
2 16 0 65535 -32768 32767
3 24 0 16 777 215 -8 388 608 8 388 607
4 32 0 4 294 967 295 -2 147 483 648 2 147 483 647

 

 

Llicència de Creative Commons
Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.