PHP fóra: Builder | JakPsatWeb | Webtrh
Nejste přihlášen(a)
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?
Násobit / dělit dvěma?
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:
-9223372036854775808, 9223372036854775807
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