System dwójkowy (z łac. binār , us , „podwójny”) to system liczbowy o podstawie 2 . Cyfry pozycyjnej liczby binarnej są powszechnie nazywane bit (od angielskiego binarnej cyfry lub „cyfra binarna”) . Bit może przyjmować dwie wartości, oznaczone konwencją 0 i 1 .
System binarny jest przydatny do reprezentowania działania elektroniki cyfrowej stosowanej w komputerach . Dlatego jest używany przez języki programowania niskiego poziomu .
Najpopularniejszym systemem dwójkowym jest matematyczna podstawa numer dwa , pozwalająca na reprezentowanie liczb za pomocą numeracji miejsc z użyciem tylko dwóch cyfr: 0 i 1.
W tego typu kodowaniu każda liczba jest reprezentowana jednoznacznie przez uporządkowany ciąg cyfr . A każda pozycja m reprezentuje potęgę ( m -1) podstawy . Jeśli ograniczymy się początkowo do dodatnich liczb całkowitych , w bazie dziesiątej te potęgi to: jeden (1), dziesięć (reprezentowane przez 10), sto (dziesięć razy dziesięć, reprezentowane przez 100), tysiąc (dziesięć razy sto , reprezentowane przez 1000), dziesięć tysięcy itd. W systemie o podstawie 2 są to: jedna (1), dwie (również reprezentowane przez 10), cztery (dwa razy dwa, reprezentowane przez 100), osiem (dwa razy cztery, reprezentowane przez 1000), szesnaście (dwa razy osiem, reprezentowane przez do 10000 itd.
Widzimy, że znaczenie reprezentacji 10, 100, 1000 itd. zależy od zastosowanej podstawy: 10 jest zawsze równe podstawie, to znaczy dziesięć w podstawie dziesięć, ale dwa w podstawie dwa.
W bazie dziesiątej używa się dziesięciu cyfr, od zera do dziewięciu; w bazie n używamy n cyfr, od zera do n -1; dlatego w podstawie drugiej używamy dwóch cyfr „0” i „1”.
Liczbę wyrażoną w bazie B za pomocą czterech cyfr 1101 można analizować:
, co daje :
1101 w bazie B = 10: | |||||
1101 w bazie B = 8: | |||||
1101 w bazie B = 2: |
Pierwsze liczby i cyfry o podstawie 10 są zapisywane:
dziesiętny | dwójkowy | Uwaga |
---|---|---|
0 | 0 | zero |
1 | 1 | un = podstawowa potęga zero (ważna dla wszystkich podstaw, czyli dwóch i dziesięciu) |
2 | 10 | dwa = dwa do potęgi jeden (zero za 1) |
3 | 11 | |
4 | 100 | cztery = dwa do potęgi dwójki (dwa zera za 1) |
5 | 101 | |
6 | 110 | |
7 | 111 | |
8 | 1000 | osiem = dwa do potęgi trzeciej (trzy zera za 1) |
9 | 1001 |
Każdemu bitowi nadajemy potęgę dwójki, tak jak ta sekwencja 1, 2, 4, 8, 16, 32, 64. Aby otrzymać liczbę 7, dodajemy pierwsze trzy bity; aby otrzymać 6, dodajemy tylko bit o wadze 4 i bit o wadze 2.
Techniki czterech podstawowych operacji (dodawanie, odejmowanie, mnożenie i dzielenie) pozostają dokładnie takie same jak w zapisie dziesiętnym; są po prostu drastycznie uproszczone, ponieważ są tylko dwie cyfry 0 i 1. Na przykład dla mnożenia, niezależnie od podstawy, mnożenie przez 10 (tj. przez samą podstawę) jest wykonywane przez dodanie zera po prawej stronie.
Jedyne zmiany, które zmieniają z jednej strony postać ciągu cyfr wyrażającego wynik (zlicza on tylko zera i jeden), z drugiej strony znaczenie tego ciągu (10 oznacza „dwa”, a nie „dziesięć”, 100 oznacza „cztery”, a nie „sto” itd.).
Dodawanie i odejmowaniePrzechodzimy od jednej liczby binarnej do drugiej, dodając 1, jak w systemie dziesiętnym, nie zapominając o blokadach i używając zwykłej tabeli (ale zredukowanej do najprostszego wyrażenia):
0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 avec 1 retenue 0 - 0 = 0 0 - 1 = 1 avec 1 retenue 1 - 0 = 1 1 - 1 = 0Można zauważyć, że dodanie dwóch bitów A i B daje A XOR B z przeniesieniem równym A AND B.
Więc :
11 + 1 ____ 100Szczegół :
1 + 1 = 10 => on pose 0 et on retient 1 1 + 1(retenue) = 10 => on pose 0 et on retient 1 0 + 1(retenue) = 1 => on pose 1 devant 00Mnożenie przez dwa odbywa się poprzez przesunięcie każdej cyfry o jeden krok w lewo i wstawienie zera na końcu.
Na przykład dwa razy jedenaście:
Cały podział przez dwa odbywa się poprzez przesunięcie każdej cyfry o jeden krok w prawo, przy czym prawa cyfra jest usuwana.
Na przykład jedenaście podzielone przez dwa:
Arytmetyka binarna (prościej obliczenia binarne) jest używana przez najpowszechniejsze systemy elektroniczne (kalkulatory, komputery itp.), ponieważ dwie cyfry 0 i 1 są tam odzwierciedlone przez napięcie lub przepływ prądu. Na przykład 0 może być reprezentowane przez stan niski (napięcie lub prąd zerowy), a 1 przez stan wysoki (istniejące napięcie, płynący prąd).
Aby uzupełnić reprezentację liczb całkowitych, trzeba umieć pisać liczby całkowite ujemne . Istnieją dwie reprezentacje, dopełnienie jedynki i dopełnienie dwóch.
Uzupełnienie doTo kodowanie polega na odwróceniu wartości każdego bitu.
Na przykład, aby uzyskać -7:
Wadą tego systemu jest to, że zero ma dwie reprezentacje: 0000 i 1111 ("+0" i "-0"). Nie jest używany przez obecne komputery, ale był używany przez starsze komputery, takie jak Control Data 6600 . Dwie reprezentacje zera komplikują obwody testowe.
Uzupełnienie dla dwojgaUzupełnienie do dwójki polega na wykonaniu uzupełnienia do jedynki, a następnie dodaniu 1.
Na przykład, aby uzyskać -7:
To kodowanie ma tę zaletę, że nie wymaga specjalnego różnicowania liczb dodatnich i ujemnych, a w szczególności pozwala uniknąć problemu podwójnej reprezentacji zera.
Oto dodanie -7 i +9 wykonywane jako 4-bitowe uzupełnienie dwójkowe:
-7 1001 +9 1001 __ ____ 2 (1) 0010 (on « ignore » la retenue)Z n bitami, ten system pozwala reprezentować liczby od -2 n -1 do 2 n -1 - 1.
Podstawy 8 (ósemkowe) i 16 (szesnastkowe) są podstawami potęgowymi o podstawie 2. Te dwie podstawy są powszechnie używane w przetwarzaniu danych i ze względów praktycznych; te zasady są silnie powiązane z podstawą 2, a liczby zapisane w tych podstawach są bardziej "manipulowalne" (z powodu krótszego zapisu) przez ludzki intelekt. Zapisywanie liczb w tych podstawach można łatwo osiągnąć, grupując cyfry od wpisywania liczby do podstawy 2.
Moglibyśmy łatwo rozszerzyć tę zasadę na wszystkie podstawy, które są potęgami 2.
Do binarnegoWystarczy przeliczyć wartość każdej z cyfr w postaci binarnej przy użyciu liczby cyfr odpowiadającej potędze podstawy: 16 = 2 4 , 8 = 2 3 , a więc 4 cyfry dla szesnastkowej i 3 dla ósemkowej:
|
|
Kod Graya, zwany także binarnym odbitym, pozwala na zmianę tylko jednego bitu w czasie, gdy liczba jest zwiększana lub zmniejszana o jeden. Nazwa kodu pochodzi od amerykańskiego inżyniera Franka Graya , który w 1947 roku zgłosił patent na ten kod.
Aby bezpośrednio obliczyć kod Graya liczby całkowitej z jej poprzednika, możemy postępować w następujący sposób:
Aby pogodzić logikę binarną komputera z logiką człowieka, można przekształcić na binarne, a nie same liczby, każdą z cyfr, które tworzą je w dziesiętnym zapisie pozycyjnym. Każda z tych cyfr jest następnie kodowana na 4 bitach:
1994 = 0001 1001 1001 0100 1×1000 + 9×100 + 9×10 + 4×1Przy n bitach (n wielokrotność 4), możliwe jest przedstawienie liczb od 0 do 10 n/4 -1. To znaczy w przybliżeniu między 0 a 1,778 n -1. DCB jest kodem nadmiarowym, w rzeczywistości niektóre kombinacje nie są używane (np. 1111).
Ta reprezentacja pozwala uniknąć przez konstrukcję wszystkich kłopotliwych problemów z akumulacją zaokrągleń, które występowałyby podczas manipulowania dużymi liczbami przekraczającymi rozmiar obwodów w arytmetyce liczb całkowitych i zmuszały do uciekania się do zmienności zmiennoprzecinkowej. Można jednak manipulować liczbami z dowolną precyzją , używając kodowania wydajniejszego niż DCB.
Istnieją warianty kodowania DCB:
W informacji teorii The entropia z źródło informacji jest wyrażona w bitach . Sama teoria jest obojętna na reprezentację wykorzystywanych przez nią wielkości.
Klasycznej logiki jest logika dwuwartościowy: propozycja jest albo prawdziwe, albo fałszywe. Możliwe jest zatem przedstawienie prawdziwości zdania za pomocą liczby binarnej. Na przykład możemy modelować działania arytmetyki binarnej za pomocą algebry Boole'a .
Algebra Boole'a reprezentuje bardzo szczególny przypadek użycia prawdopodobieństw obejmujących tylko wartości prawdy 0 i 1. Zobacz twierdzenie Coxa-Jaynesa .
Binarny jest używany w przetwarzaniu danych, ponieważ umożliwia modelowanie działania elementów przełączających , takich jak TTL lub CMOS . Obecność progu napięcia na tranzystorach, pomijając dokładną wartość tego napięcia, będzie reprezentować 0 lub 1. Na przykład liczba 0 będzie używana do oznaczenia braku napięcia z dokładnością do 0,5 V , a liczba 1 do wskazania jego obecność powyżej 0,5 V . Ten margines tolerancji umożliwia zepchnięcie szybkości mikroprocesorów do wartości sięgających kilku gigaherców .
W informatyce reprezentacja binarna umożliwia wyraźne manipulowanie bitami : każda cyfra binarna odpowiada bitowi. Ponieważ jednak reprezentacja binarna wymaga użycia wielu cyfr (nawet w przypadku dość małych liczb), prowadzi to do znacznych problemów z czytelnością , a tym samym do ryzyka błędów transkrypcji dla programistów. Dlatego też preferowane są inne reprezentacje : notacja szesnastkowa, która umożliwia manipulowanie informacjami w pakietach 4 bitowych, jest odpowiednia dla prawie wszystkich obecnych mikroprocesorów pracujących ze słowami 8, 16, 32 lub 64 bitowymi; rzadszy, punktowany ósemkowy , popularny czas pierwszych minikomputerów DEC do 12 lub 36 bitów, które mogą reprezentować informacje w paczkach po 3 bity.