logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak ugryźć ten problem? [Konwersje systemów liczbowych]

muHa 06 Paź 2005 00:03 3621 3
REKLAMA
  • #1 1876449
    muHa
    Poziom 12  
    Posty: 37
    Witam!
    Dostałem ciekawe zadanie do zrealizowania. Otóż, mam napisać program który "konwertuje" systemy liczbowe (dec na oct, hex i bin) i na odwrot + kazdy na kazdy.
    O ile "przekonwertowanie" liczb dziesietnych na reszte jest oczywiste (%x... itp.)
    to na odwrót moze byc wiekszy problem.
    Tu pojawia sie moje pytanie, czy istnieje mozliwosc przekonwertowanie liczby binarnej na np. dziesietnej bez pomocy funkcji dodatkowych, czy idzie to zrobic np. przez printf?!
    Czy moze musze do kazdej konwersji zapisywac oddzielny algorytm.
    Jak najlepiej ugryzc to zadanie!

    Pozdrawiam i z gory dzieki za pomoc!
  • REKLAMA
  • #2 1876557
    krzychoo_soft
    Poziom 17  
    Posty: 233
    Pomógł: 16
    Ocena: 13
    Tylko do Bin - Dec i Dec - Bin będziesz musiał napisać coś sam :) Ale to się ogranicza do jednej, może dwuch pętelek i modulo przez podstawę systemu :)

    pozdrawiam,
  • REKLAMA
  • #3 1876761
    Sam Sung
    Poziom 33  
    Posty: 2018
    Pomógł: 227
    Ocena: 597
    muHa napisał:
    Tu pojawia sie moje pytanie, czy istnieje mozliwosc przekonwertowanie liczby binarnej na np. dziesietnej bez pomocy funkcji dodatkowych, czy idzie to zrobic np. przez printf?!
    Czy moze musze do kazdej konwersji zapisywac oddzielny algorytm.
    Jak najlepiej ugryzc to zadanie!

    Nie da się tego zrobić przez printf.
    Algorytm jest jeden, zmienia się tylko parametr - podstawa systemu liczbowego.
    Jeśli liczba do konwersji mieści się w pojedynczym rejestrze / zmiennej, to można to bardzo łatwo zapisać. Konwersja polega na cyklicznym dzieleniu liczby przez podstawę systemu. Reszta z dzielenia w każdym kroku jest wartością kolejnej cyfry od prawej strony. Kończymy, gdy wynik dzielenia = 0.
  • #4 1882147
    Łuk_F
    Poziom 17  
    Posty: 257
    Pomógł: 34
    Ocena: 12
    Witam

    Mam napisany program w języku C, który wykonuje konwersje systemów 2, 8, 10 i 16 we wszystkie strony. Możesz zobaczyć jak to ja wykonuje. Nie jest to może najszybszy kod ale spełnia warunki.

    Skompiluj sobie ten kod i zobaczysz jak działa ten program.
    Załączniki:
    • Projekt.c (54.17 KB) Musisz być zalogowany, aby pobrać ten załącznik.
REKLAMA