#1 před rokem

fenix
Člen
Registrovaný: 11. 3. 2009
Příspěvky: 25

Bitovy posun s cisly vetsi jak 32bitu

Zdravim,
resim problem
potrebuji manipulovat s cisli vetsi jak 32bit. To resi extenze gmp.
Existuje gmp_and, gmp_or, gmp_xor, …
Ovsem nenasel jsem funkci na bitovy posun. Na netu jsem nic nenasel.
Nevi nekdo jak na to?

Napadla me myslenka ze vlastne bitovy posun je jen pridavani nul z prava (posun vlevo) nebo odebirani nul a jednicek z prava (posun v pravo). Takze bych to mohl vyresit string operaci (pokud to tak zkutecne je za vsech podminek). Ovsem nproblem jsou zaporna cisla.

Napady?

 

#2 před rokem

jasir
Člen
Registrovaný: 4. 12. 2008
Příspěvky: 759

Re: Bitovy posun s cisly vetsi jak 32bitu

Násobit / dělit dvěma?

 

#3 před rokem

fenix
Člen
Registrovaný: 11. 3. 2009
Příspěvky: 25

Re: Bitovy posun s cisly vetsi jak 32bitu

jasir napsal(a):

Násobit / dělit dvěma?

Ano to je varianta, ktera je funkcni. Ale spatne jsem zadal zadani. Ja musim pracovat presne s cisly 64bit.
gmp funkce pracuji zrejme z teoretickym nekonecnem.

Kdyz vezmeme 64bit int treba v pascallu tak nejmensi a nejvetsi cislo je:
-92233720368547758089223372036854775807

Ted mala matematika:

9223372036854775807 + 1 = -9223372036854775808

9223372036854775807 * 2 = -2
9223372036854775807 * 3 = 9223372036854775805
9223372036854775807 * 4 = -4

-9223372036854775808 * 2 = 0
-9223372036854775808 * 3 = -9223372036854775808
-9223372036854775808 * 4 = 0

Tohle chovani potrebuji emulovat.
Nevite nekdo, jak toho dosahnout, popripade kde na internetu bych nasel algoritmus jak je pretekani implementovane? Hledal jsem a nenasel, ale mozna to hledam pod spatnymy slovy.
Dik

 

Zápatí