Sistema binari

De Viquipèdia
(S'ha redirigit des de: Codi binari)
Dreceres ràpides: navegació, cerca

El sistema binari és un sistema de numeració en el qual tots els nombres es representen utilitzant com base dues xifres: zero i un (0 i 1). En altres paraules, és un sistema de numeració de base 2, mentre que el sistema que utilitzem més habitualment és de base 10, o decimal.

Els ordinadors treballen internament amb dos nivells de voltatge, pel que el seu sistema de numeració natural és el sistema binari (encès, apagat).

Si el sistema decimal treballa amb deu xifres (0,1,2,3,4,5,6,7,8,9), el sistema octal o de base vuit treballaria amb vuit (0,1,2,3,4,5,6,7). El sistema binari, o de base dos, només n'utilitza dos (0 i 1).

Història del codi binari[modifica | modifica el codi]

L'antic matemàtic Indi Pingala va presentar la primera descripció del que es coneix com a Sistema de Numeració Binari, en el segle tercer abans de la nostra Era.

El 1605 Francis Bacon va parlar d'un Sistema pel qual les lletres es podien transformar a seqüències de dígits Binaris, les quals podien ser codificades com a variacions amb prou feines visibles en la font de qualsevol text arbitrari.

Operacions amb binaris[modifica | modifica el codi]

Binaris a decimals[modifica | modifica el codi]

Donat un nombre N, binari, per a expressar-lo en decimal, s'ha d'escriure cada xifra que el compon (bit), multiplicada per la base del sistema (base = 2), elevada a la posició que ocupa.

Exemple: 11012 = 1 * 23 + 1 * 22 + 0 * 21 + 1 * 20 = 1310

Decimals a Binaris[modifica | modifica el codi]

Donat un nombre decimal, per a expressar-lo en binari, s'ha de dividir entre la potència de dos més pròxima per baix.

Exemple:

2510 =110012
25 : 24 = 25 : 16 = 1 residu 9
9 : 23 = 9 : 8 = 1 residu 1
1 : 22 = 1 : 4 = 0 residu 1
1 : 21 = 1 : 2 = 0 residu 1
en sobra 1

Suma de nombres binaris[modifica | modifica el codi]

Recordem les següents sumes bàsiques:

0+0=0 
0+1=1 
1+1=10

Així, si volem sumar 100110101 més 11010101, tenim:

 

 100110101 
 11010101 
 ---------- 
 1000001010 

Operem com en decimal: comencem a sumar des de la dreta, en el nostre exemple, 1+1=10, aleshores escrivim 0 i "en portem" 1. Se suma aquest 1 a la següent columna: 1+0+0=1, i seguim fins a acabar totes la columnes (exactament com en el càlcul decimal).

Multiplicació[modifica | modifica el codi]

Per multiplicar dos nombres en representació binària ho farem de forma similar a com ho fem en representació decimal, tenint en compte que només hi ha dos dígits i que els seus productes són com segueixen:

0×0=0 
0×1=0 
1×0=0 
1×1=1 

D'acord amb això, per multiplicar dos nombres A i B considerem productes parcials: per cada dígit de B prenem el seu producte amb A i l'escrivim en una nova línia desplaçat cap a l'esquerra de manera que el darrer dígit (el més a la dreta) coincideixi amb aquell que estam considerant de B. La suma de tots aquests productes parcials dóna el resultat final.

Per exemple, per multiplicar els nombres binaris 1100 i 1101 ho farem com segueix. En aquesta multiplicació anomenam A al primer nombre (1100, que correspon a 12 en decimal) i B al segon (1101, que correspon a 13 en decimal):

1 1 0 0 (A)
× 1 1 0 1 (B)
---------
1 1 0 0 ← Correspon a l'1 en el nombre B
+ 0 0 0 0 ← Correspon al 0 en el nombre B
+ 1 1 0 0 
+ 1 1 0 0 
-----------------
= 1 0 0 1 1 1 0 0

Això és, 1*27+1*24+1*23+1*22 = 128+16+8+4=156.

Vegeu també l'Algorisme de multiplicació de Booth.

Divisió[modifica | modifica el codi]

La divisió en binari és similar a la decimal, l'unica diferencia és que a l'hora de fer les restes, dins de la divisió, aquestes han de ser realitzades en binari. Per exemple, dividirem 100010010 (274) entre 1101 (13):

100010010 |1101
——————
- 0000 010101
———————
10001
- 1101
———————
01000
- 0000
———————
10000
- 1101
———————
00111
- 0000
———————
01110
- 1101
———————
00001

Codis binaris[modifica | modifica el codi]

Binari Natural[modifica | modifica el codi]

S'expressa un valor emprant tants bits com sigui necessaris de dreta a esquerra. És a dir, per representar el nombre decimal 30 empraríem el 11110, on per a convertir-ho a decimal seria 24·1 + 23·1 + 22·1 + 21·1 + 20·0 = 16 + 8 + 4 + 2 = 30.

Binari BCD Natural[modifica | modifica el codi]

Amb aquest codi expressem cada un dels dígits decimals en binari per separat. Per tant necessitem representar del 0 al 9, i per a fer-ho necessitem 4 bits, car 23 només ens deixa representar 8 valors, de 0 a 7. Així doncs el 10 seria el 0001 0000.

Complement a 2 (CA2)[modifica | modifica el codi]

Aquest codi és per a representar dígits amb signe, amb l'avantatge de què es guanya la representació d'un nombre més negatiu. Per a escriure'l la part positiva va precedida d'un 0 i té igual representació que en binari natural. En canvi els nombres negatius es representen fent l'invers del valor en positiu i sumant-hi un 1.

0 1 1 1 - 7
0 1 1 0 - 6
0 1 0 1 - 5
0 1 0 0 - 4
0 0 1 1 - 3
0 0 1 0 - 2
0 0 0 1 - 1
0 0 0 0 - 0
1 1 1 1 - -1
1 1 1 0 - -2
1 1 0 1 - -3
1 1 0 0 - -4
1 0 1 1 - -5
1 0 1 0 - -6
1 0 0 1 - -7
1 0 0 0 - -8

Mòdul i Signe[modifica | modifica el codi]

El bit de més pes representa el signe, 0 per a positius i 1 per a negatius, el seu valor és expressat en binari natural per la resta de bits.

Codi Gray[modifica | modifica el codi]

Aquest codi té la particularitat de ser adjacent, per això s'empra a les taules de veritat. Per a escriure'l es fa mirall de la part de dalt i posem un 0 a la part superior i un 1 a la part inferior, com a bit de més pes.

0 - 0
1 - 1

0 0 - 0
0 1 - 1
1 1 - 2
1 0 - 3

0 0 0 - 0
0 0 1 - 1
0 1 1 - 2
0 1 0 - 3
1 1 0 - 4
1 1 1 - 5
1 0 1 - 6
1 0 0 - 7

Vegeu també[modifica | modifica el codi]

References[modifica | modifica el codi]

  • Sanchez, Julio; Canton, Maria P. (2007), Microcontroller programming : the microchip PIC, Boca Raton, FL: CRC Press, p. 37, ISBN 0849371899

Enllaços externs[modifica | modifica el codi]

A Wikimedia Commons hi ha contingut multimèdia relatiu a: Sistema binari Modifica l'enllaç a Wikidata