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 01. 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 01, 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