C - funkcia na prevod postupnosti

C,C++,C#

Moderátori: psichac, Moderátori

OM0XA
Stály člen
Stály člen
Príspevky: 235
Dátum registrácie: 03 Okt 2012, 23:18
Bydlisko: Poprad

C - funkcia na prevod postupnosti

Príspevok od používateľa OM0XA » 20 Feb 2017, 11:04

Ahoj.

potrebujem funkciu v C ktora pre cislo z postupnosti x, vrati cislo z postupnosti y. Nechcem to stylom, ze obidve postupnosti zadefinujem po prvku ale vypoctom. Optimalizovane by to malo byt na rychlost (strojovy cas).
Ja som vymyslel toto: y = ((56-8*(x/8))+(x%8));
Ma niekto lepsi napad? dik.

Postupnosti su taketo. x - prvy stlpec, y - druhy stlpec:

0: 56
1: 57
2: 58
3: 59
4: 60
5: 61
6: 62
7: 63
8: 48
9: 49
10: 50
11: 51
12: 52
13: 53
14: 54
15: 55
16: 40
17: 41
18: 42
19: 43
20: 44
21: 45
22: 46
23: 47
24: 32
25: 33
26: 34
27: 35
28: 36
29: 37
30: 38
31: 39
32: 24
33: 25
34: 26
35: 27
36: 28
37: 29
38: 30
39: 31
40: 16
41: 17
42: 18
43: 19
44: 20
45: 21
46: 22
47: 23
48: 8
49: 9
50: 10
51: 11
52: 12
53: 13
54: 14
55: 15
56: 0
57: 1
58: 2
59: 3
60: 4
61: 5
62: 6
63: 7
0

Používateľov profilový obrázok
daqq
Power user
Power user
Príspevky: 2528
Dátum registrácie: 10 Jún 2008, 00:00
Bydlisko: Bratislava
Vek: 36
Kontaktovať používateľa:

Re: C - funkcia na prevod postupnosti

Príspevok od používateľa daqq » 20 Feb 2017, 11:35

No, najrychlejsie to mas naozaj lookup tabulkou s 64 prvkami - to proste neogabes.

Co sa tyka vypoctu, no, nasobenie, delenie, modulo su casovo narocne operacie. Takze casti z

y = ((56-8*(x/8))+(x%8));

by som napisal ako:
(x%8) = x & 0x07;
8*(x/8) = x & 0xF8;

(uvazujuc 8 bitovy uint).

Takze y = (56 - (x & 0xF8)) + (x & 0x07);
0
Outsource your thinking: Get religious!
Zistenie: Ked robite sucasne v C, C++, C#, Matlabe, trocha pokukujete po VHDL, sialenstvo nemoze byt daleko...este stastie, ze som lietadlo a nemam tieto problemy.

OM0XA
Stály člen
Stály člen
Príspevky: 235
Dátum registrácie: 03 Okt 2012, 23:18
Bydlisko: Poprad

Re: C - funkcia na prevod postupnosti

Príspevok od používateľa OM0XA » 20 Feb 2017, 12:09

dik. k tomu istemu som dosiel, ked som si tie cisla zapisal binarne. :agree:
0

Napísať odpoveď