Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Przeliczanie liczby dziesiętnej na liczbe binarną

26 Wrz 2007 18:24 939 3
  • Poziom 10  
    Chciałem sie spytać czy sposób, który używam jest prawidłowy?

    np. liczbę 23 przeliczam tak:
    rozpisuje sobie liczby pomnożone przez dwa:
    1
    2
    4
    8
    16
    32
    64
    128
    256
    itd

    następnie podstawiam zero gdy liczba jest większa od 23 a jeden gdy mniejsza:
    ...
    16 1
    32 0
    później do 16 dodaje następna liczbę czyli 8.
    Jeśli jest powyżej 26 pisze zero itd.
    Wychodzi mi taki wynik:
    1 1
    2 1
    4 1
    8 0
    16 1
    32 0
    a następnie zapisuje wynik od tylu, czyli 10111

    tym sposobem mogę obliczyć każda liczbę np. 654
    1 0
    2 1
    4 1
    8 1
    16 0
    32 0
    64 0
    128 1
    256 0
    512 1
    1024 0

    i wychodzi mi wynik 1010001110 (prawidłowy)
    czy jest ta metoda gdzieś opisana, czy to jest odmiana innej metody na przykład dzielenia liczby:?:
  • Pomocny dla użytkowników
    Dzielisz liczbę przez 2 z resztą.

    Reszta z kolejnych dzieleń to kolejne bity od najmłodszego. Kończysz gdy iloraz jest równy 0.

    23 : 2 = 11 reszta 1 (najmłodszy bit)
    11 : 2 = 5 reszta 1
    5 :2 = 2 reszta 1
    2: 2 = 1 reszta 0
    1:2 = 0 reszta 1 (najstarszy bit)


    wynik 23d -> 10111b


    654 :2 = 327 r 0
    327 :2 = 163 r 1
    163 :2 = 81 r 1
    81 : 2 = 40 r 1
    40 :2 = 20 r 0
    20 :2 = 10 r 0
    10 :2 = 5 r 0
    5 :2 =2 r 1
    2:2 = 1 r 0
    1:2 = 0 r 1

    654d -> 1010001110b
  • Poziom 10  
    Znam ten sposób ale mi chodzi czy mój jest prawidłowy
  • Pomocny dla użytkowników
    Jeżeli daje poprawne wyniki to tak :)

    po prostu zastąpiłeś dzielenie metodą sumowania z porównywaniem (tak działają przetworniki analogowo cyfrowe z sukcesywną aproksymacją)

    Można też odejmować kolejne potęgi dwóch od liczby wejściowej

    jak się nie da odjąć bo za duża to piszesz 0 i przechodzisz do niższej potęgi.

    Jak się da odjąć to zapisujesz 1 i zapamiętujesz wynik i przechodzisz do niższej potęgi.

    23 - 16 = 7 -> 1
    7 - 8 nie da się więc 0
    7- 4 = 3 -> 1
    3 -2 = 1 -> 1
    1 -1 = 0 _. 1

    10111