Operacja modulo

0

Czy jest inny sposób niż operator %? Jak wiadomo, to jest wolne, a potrzebuje "wyciągnąć" z liczby kazdą jej cyfre.

2
unsigned value=?;
for(unsigned i=0;(value)||(!i);++i)
  {
   unsigned next=value/10;
   buf[i]=value-10*next;
   value=next;
  }

Nie ma % ale dzielenie zostało.
Jeżeli "cyfry" są dziesiętne to nie ma innego sposobu. Lecz jeżeli cyfry są w systemie który jest potęgą dwójki: 2,4,8,16 to da się obejść samymi operacjami bitowymi, dodawanie, odejmowanie.

0

Tak przy okazji - nie chce zakładac nowego tematu dla jakiejs glupoty. jak zapisać to w jednej linijce?

char *wsk;
wsk = (char *) wynik;
0
char *wsk=wynik; //powinno wystarczyć
0
błąd:cannot convert 'bool*' to 'char*' in initialization
 char *wsk = wynik;
             ^

No tak, zapomnialem dodać, ze wynik to bool i stąd to rzutowanie.
EDIT: już wiem ;)

2

Jak widzę z innych tematów nie zrozumiałeś na czym polega przyspieszenie.
Same operacje % i / to jest dokładnie ta sama operacja i jest długa.
Przeważnie przy przekształceniu na inny system lub przy "ręcznym" mnożeniu robimy obie operacje pod rząd:

Cyfra[i]=wynik%MOD;
wynik/=MOD;

To co pokazałem w tym temacie pozwala na wyeliminowanie jednej z tych operacji:

next=wynik/MOD;
Cyfra[i]=wynik-next*MOD;
wynik=next;

Natomiast to co zacząłeś używać:

Cyfra[i]=wynik-MOD*(wynik/MOD);
wynik/=MOD;

jest z cała pewnością dłuższe od pierwotnego kodu

0

Czy jest inny sposób niż operator %? Jak wiadomo, to jest wolne, a potrzebuje "wyciągnąć" z liczby kazdą jej cyfre.
Robisz miliard takich operacji na sekundę, że ci jest za wolne?

0

A może by ją na string-a przerobić?

0
zonkoo22 napisał(a)
Azarien napisał(a)

Robisz miliard takich operacji na sekundę, że ci jest za wolne?

Dokładnie tak.

No to albo asembler albo przemyśl cały algorytm. Albo szybszy komputer.

0
Azarien napisał(a):
zonkoo22 napisał(a)
Azarien napisał(a)

Robisz miliard takich operacji na sekundę, że ci jest za wolne?

Dokładnie tak.

No to albo asembler albo przemyśl cały algorytm. Albo szybszy komputer.

Albo wielowątkowość - na pewno wyjdzie taniej, niż szybszy procesor/pamięć.

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