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
C - funkcia na prevod postupnosti
Moderátori: psichac, Moderátori
- daqq
- 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
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);
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.
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.
Re: C - funkcia na prevod postupnosti
dik. k tomu istemu som dosiel, ked som si tie cisla zapisal binarne.
0