RJ1RNP35BLLV3
Grafika przedstawia namalowane kredkami cyfry w różnych kolorach oraz różnej wielkości.

I_P_W14_M08_Java Konwersja liczb z systemu dwójkowego na dziesiętny w języku Java

Źródło: wygenerowany przez sztuczną inteligencję Canva.ai, domena publiczna.

Zanim przejdziemy do konwersji liczb, przypomnijmy, czym są systemy liczbowe: binarny i dziesiętny.

System binarny:

  • pozycyjny system liczbowy, którego podstawą jest liczba 2,

  • do zapisu dowolnej liczby wykorzystujemy tylko dwie cyfry: 0 oraz 1,

  • jest to powszechnie używany system w elektronice i informatyce,

  • bitem nazywamy każdą cyfrę liczby w tym systemie.

System dziesiętny:

  • pozycyjny system liczbowy, którego podstawą jest liczba 10,

  • jest to system, w którym wykorzystujemy dziesięć cyfr: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,

  • jest to system używany przez nas na co dzień.

Na co dzień posługujemy się liczbami zapisanymi w systemie dziesiętnym, dlatego interpretacja wartości liczby binarnej i wykonywanie obliczeń w tym systemie może być dla nas uciążliwe. Taką liczbę warto wówczas zamienić na liczbę w systemie dziesiętnym. Jak to zrobić?

System dwójkowy, podobnie jak dziesiętny, jest systemem pozycyjnym. Liczby są w nim zapisywane w postaci ciągu cyfr 0 i 1. Każda cyfra (bit) jest mnożną odpowiadającej jej wagi, czyli podstawy systemu (liczby 2) podniesionej do potęgi zależnej od pozycji bitu.

Tabela przedstawia wagi liczby dwójkowej, składającej się z n cyfr części całkowitej oraz m cyfr części ułamkowej:

Cyfra

xn-1

xn-2

…

x1

x0

x-1

x-2

…

x-m

Waga pozycji

2n-1

2n-2

…

21

20

2-1

2-2

…

2-m

Pozycje bitów części całkowitej numerujemy od 0, rozpoczynając od prawej strony. Pozycje bitów części ułamkowej numerujemy po przecinku od lewej strony, zaczynając od -1. Dzięki temu możemy obliczyć wartość dziesiętną liczby zapisanej w systemie dwójkowym.

Ważne!

Wartością dziesiętną liczby o reprezentacji xn-1, xn-2, …, x1, x0, x-1, x-2, …, x-m 2 jest:

xn-12n-1+…+x121+x020+x-12-1+…+x-m2-m

Algorytm konwersji liczby w systemie dwójkowym na system dziesiętny wygląda następująco:

  1. Mnożymy cyfry danej liczby binarnej przez wagi ich pozycji (zgodnie z powyższą tabelą).

  2. Dodajemy do siebie otrzymane iloczyny, otrzymując w ten sposób wartość liczby w systemie dziesiętnym.

W systemie binarnym w liczbie mogą występować tylko cyfry 0 i 1, a w systemie dziesiętnym cyfry od 0 do 9.

Przykład 1

Zamieńmy liczbę 10012 na system dziesiętny.

Przy rozwiązywaniu tego zadania może nam się przydać tabela z kolejnymi potęgami liczby 2. Ułatwi ona dokonywanie obliczeń.

Waga

29

28

27

26

25

24

23

22

21

20

Wynik

512

256

128

64

32

16

8

4

2

1

Nasza przykładowa liczba jest liczbą całkowitą, bez części ułamkowej. Dlatego kolejne pozycje cyfr w naszej liczbie numerujemy od 0, rozpoczynając od najmłodszego bitu, a kończąc na najstarszym bicie.

10012=1·23+1·20=8+1=910

Zauważmy, że cyfry 0 nie zostały uwzględnione w dodawaniu iloczynów. Jeżeli cyfrę 0 pomnożymy przez wagę pozycji, otrzymamy iloczyn równy 0 – a to nie wpływa na wynik obliczeń. Jeżeli chcielibyśmy jednak uwzględnić iloczyny wynoszące 0, działanie wyglądałoby następująco:

10012=1·23+0·22+0·21+1·20=8+0+0+1=910

Jak należało się spodziewać, otrzymaliśmy taką samą wartość.

Polecenie 1

Napisz naiwny konwerter liczb naturalnych z systemu dwójkowego (binarnego) na dziesiętny. Działanie konwertera przetestuj dla liczby 11111100100.

Naiwny konwerter polega obliczeniu sumy iloczynów kolejnych potęg liczby 2 (wag) oraz odpowiadających im cyfr liczby dwójkowej.

Przykład 2

Dla liczby 101001Indeks dolny (2) konwerter zadziała następująco:

1   ⋅ 2 0   +   0 ⋅ 2 1 + 0 ⋅ 2 2 + 1 ⋅ 2 3 + 0 ⋅ 2 4 + 1 ⋅ 2 5

Specyfikacja problemu:

Dane:

  • liczba – łańcuch znaków; liczba naturalna zapisana w systemie dwójkowym

Wynik:

  • wynik – liczba naturalna; liczba zapisana w systemie dziesiętnym

Wynik po konwersji:

Linia 1. 2025.
R189NSEFUKZL9
Wymyśl pytanie na kartkówkę związane z tematem materiału.
R16GVOE7D38NE

Przycisk do pobrania pliku py z kodem źródłowym.

Plik PY o rozmiarze 301.00 B w języku polskim

Słownik

najmłodszy bit
najmłodszy bit

bit o najmniejszej wadze (najmniej znaczący), najbardziej wysunięty na prawo

najstarszy bit
najstarszy bit

bit o największej wadze (najbardziej znaczący), najbardziej wysunięty na lewo

argument
argument

element składni w określonym języku programowania, który w wyniku wywołania podprogramu zostaje utożsamiony (skojarzony) z określonym parametrem podprogramu

parametr
parametr

element składni języka, który jest definiowany przy deklaracji metody lub funkcji; deklarujemy go w nagłówku podprogramu; umożliwia komunikację pomiędzy podprogramem (funkcją/metodą), a programem go wywołującym