Pokud znáš maximální rozsah indexu, tak hodnota*(rozsah+1)+index
Pokud neznáš, tak například sudé bity pro index, liché pro hodnotu, ale podle mě ten rozsah znáš, takže si spočítej, jestli ti to nepřeteče atd.atd.
Pavle moc nerozumím jak to myslíš, můžeš to upřesnit ? Díky
Jasně :-) Pokud například víš, že maximální hodnota indexu bude 10000, pak můžeš spočítat:
výsledek = hodnota*10001 + index
a budeš mít jistotu, že ať je index jakýkoli od 0 do toho 10000, tak neovlivní vyšší část toho výsledku.
Problémy jsou dva:
1) nemusíš max index znát
2) výsledek může přetéct přes maximální reprezentovatelnou hodnotu - tady záleží, kde se to použije, zda můžeš počítat s 64bitovými čísly, delšími čísly atd.
Druhá možnost byla myšlena tak, když neznáš rozsahy. Potom se může například obě vstupní čísla mohou převést do
binární podoby a jednotlivé bity smíchat do výsledku stylem sudý bit - bit z indexu, lichý bit - bit z druhé hodnoty.
Zase - může to přetéct, je to komplikovanější, ale zajímavější :-)