Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

Kalkulator w oparciu skonstruowaną strukturę listy



 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> C i C++
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
fantazy12
Gość





PostWysłany: Wto Maj 09, 2017 11:51 am  OP    Temat postu: Kalkulator w oparciu skonstruowaną strukturę listy Odpowiedz z cytatem Pisownia

Witam
Mógłby mi ktoś proszę powiedzieć jak mam zacząć i ogólnie schemat programu,który w oparciu o skonstruowaną strukturę listy realizował będzie funkcję kalkulatora dla dowolnie dużych liczb całkowitych ze znakiem (>>2^128) dla operacji dodawania,odejmowania,mnożenia i potęgowania.
Powrót do góry
Olo



Dołączył: 22 Sty 2010
Posty: 170

PostWysłany: Wto Maj 09, 2017 4:06 pm      Temat postu: Odpowiedz z cytatem Pisownia

Może tak?
Z ciągu znaków utworzyć ciąg liczb 4 bajtowych, np

A48412F513F6 //hex -> 0xA484, 0x12F513F6

Liczby zapisać w listach.
Pobierać liczby z pierwszych elementów list (najmniej znaczące bajty).
Wykonać działanie na młodszych 2 bajtach, potem na starszych uwzględniając przeniesienie (nadmiar) z młodszych.
Zapisać przeniesienie po pierwszym działaniu.
Pobrać 2 następne liczby z listy.
Wykonać działania uwzględniając przeniesienie.

Dla mnożenia 2 bajty to chyba za dużo, wynik nie
zmieści na 32 bitach, 14 bitów powinno być w sam raz.
Diabeł siedzi w szczegółach, trzeba będzie sporo pokombinować :)

_________________
2 × 2 = 3,999999999997
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Sinus32



Dołączył: 20 Sty 2007
Posty: 895

PostWysłany: Wto Maj 09, 2017 8:19 pm      Temat postu: Odpowiedz z cytatem Pisownia

Wynik mnożenia dwóch zmiennych dwubajtowych mieści się w zmiennej czterobajtowej: 0xFFFF * 0xFFFF == 0xFFFE0001. Natomiast lepiej będzie w liście trzymać zmienne 32-bitowe, a wynik mnożenia odbierać w zmiennej 64-bitowej.

No i będzie ci dużo prościej w liście trzymać zmienne liczbowe bez znaku, bo o znaku będzie decydować tylko najstarszy bit ostatniej wartości w liście (albo pierwszej wartości jeśli zdecydujesz się na kolejność little endian).

Konwersje z bitów na ciąg znaków czytelny dla człowieka i vice versa musisz napisać sam.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> C i C++ Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.16431 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |