Konwersja liczby dziesiętnej w stringu na liczbę binarną.

0

Chciałbym dowolnie długą liczbę nawet 512 bitową wpisaną jako string, zamienic na tablice, gdzie kazdy element to bedzie jednca cyfra binarna. czyli dla przykladu liczba "2012" = 11111011100 w systemie dwójkowym i to do tablicy { 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0 }. Zaznaczam, ze liczba moze byc dowolnie dluga np 512bitowa.

0

Jak rozumiem wiesz jak zamienić dziesiętną na binarną. Najprościej byłoby chyba przekonwertować stringa na int. A z int przeliczyć liczbę na binarkę i wpisywać wynikowe 0 i 1 do stringa, gdyż string jest już w domyśle tablicą do której możesz się odwołać. Czy dowolnie długą... int ma ograniczenia co do swojej pojemności, a nie mam pojęcia jak chciałbyś przeliczać na binarkę w samym stringu. Musiałbyś chyba od podstaw wszystkie możliwe operacje matematyczne napisać.

0

np: 5623 dzielimy to przez 2
5/2 = 2 i 1 reszty - pierwsza cyfra wyniku 2 a jedynka spada na dół jako 10
16/2 = 8 i 0
2/2 = 1 i 0
3 / 2 = 1 i 1
kolejna liczba którą będziemy dzielić to:
2811, zaś ponieważ wyszła reszta 1 to w binarnej liczbie młodsza cyfra będzie 1
po następnym kroku 1405 i 1
702 i 1
351 i 0
175 i 1
87 i 1
43 i 1
21 i 1
10 i 1
5 i 0
2 i 1
1 i 0
0 i 1
wynik na odwrót 1010111110111

0

Nie wszystkie możliwe operacje - wystarczy dzielenie. Napisz algorytm, który będzie dzielił duże liczby tak jak to się dzieli pisemnie w podstawówce. Potem wystarczy sprawdzać czy liczba jest parzysta(jak tak to kolejnym bitem jest 0, jak nie to 1) i dzielić liczbę na pół(jak była nieparzysta to zmniejszoną o 1). I tak, aż dojdziesz do 0.

0

Mam zadanie napisać klasę 512-bitowych liczb całkowitych bez znaku. Wymagane jest napisanie metod dodawania, odejmowania i mnozenia. Wymagane są 2 konstruktory: tworzący liczbę z dziesiętnego łańcucha tekstowego, bądź ze zwykłego INT-a. W przypadku przekroczenia zakresu liczby powinny się zachowywać tak jak zwykłe 'unsigned int' (bity przeniesienia są tracone).

Przyznacie, że zadanie jak na I rok informatyki mega trudne. Napisałem już dużo programów w c++, programowanie obiektowe, składnie itd mam wpojone. Ale to zadania mnie przerasta, nie wiem jak za to się zabrać, przekopałem chyba cały internet.

0

Zadanie jest tak banalne, że odpowiedź poznałeś w 3 klasie podstawówki. Wykonuj działania tak jakbyś to robił pisemnie. Wystarczy, że będziesz sobie zamieniał pojedyncze znaki na liczby kiedy będzie to potrzebne, wyliczał tak, jak to się robi pisemnie i zapisywał znów w postaci znaku. Nawet nie potrzeba żadnej funkcji do zamiany używać i komplikować sobie życia, tylko zwykłe +- 48 od wartości char/int

1 użytkowników online, w tym zalogowanych: 0, gości: 1