Witam
Poszukuję sposobu na duże zmniejszenie użycia pamięci tego kodu
http://4programmers.net/Pastebin/3420
Uzywaj 4 bitow do zapisu cyfry, nie 8.
Dzięki, dał byś jakiś link do przeczytania?
vector<bool>?
O czym? Zrobienie tego jest serio proste.
0 - 0000
1 - 0001
2 - 0010
3 - 0011
4 - 0100
5 - 0101
6 - 0110
7 - 0111
8 - 1000
9 - 1001
Do tego robisz jakas klase, ktora opakowuje operacje wyciagania tych liczb z charow, podmieniasz to z obecnym stringiem i gotowe.
czyli zamienić liczbę na binarną i ją przekazać do funkcji
no_name, mimo wszystko nie rozumiem twojego rozwiązania, przecież podanie ciągu binarnego do tej funkcji da zły wynik
tutaj chodzi o liczby, rzędu 50000 cyfr, więc typy liczbowe nie wchodzą w gre
http://4programmers.net/Pastebin/3424
nowy past
Jak ktoś jest w stanie dokładniej wytłumaczyć sposób no_name to proszę o priv
Nie wiem zbytnio czego nie rozumiesz.
#Robisz sobie typ, ktory trzyma wewnetrznie jakis bitset/tablice charow/whatever.
#W kazdy jeden bajt wkodowujesz 2 liczby (1 gornej czesci oktetu, 2 w dolnej czesci oktetu)
#Definiujesz potrzebne ci operacje arytmetyczne
#Modyfikujesz swoja funkcje, zeby korzystala z nowego typu.
Nie lepiej zrobić to w innym systemie liczbowym? (najlepiej jakiś istniejący bignum, np GMP)
Będzie wydajniej i zużycie pamięci będzie dużo mniejsze.
http://www.wolframalpha.com/input/?i=log%282^64%2C+10^50000%29
no_name wydaję mi się jednak, że zrobienie tego twoim sposobem, zużyje więcej pamięci.
a mogę jakoś zamienić unsigned char na bity?
c >> 4
i
c & 0x0F
Jednak zostanę przy tym sposobie co mam, jednak staram się jakoś zmienić algorytm, aby nie wychodził mi poza zakres tablicy na końcu mnożenia [z-1] - if nie wchodzi w grę bo za bardzo opóźni program
http://4programmers.net/Pastebin/3427