Referència | Trucs | Perifèrics | Recursos CITCEA | |
Tutorial | Exemples | Projectes | Inici |
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 |
Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.