Lehetséges az egész-előléptetést (azaz biteltolást, C-ben << és >> operátorok) más logikai műveletekkel (és, vagy, exkluzív vagy, stb. ) kifejezni?
"Lehetőleg az átlag gépi megvalósítást követve..."
Mármint úgy értve, hogy biteltolást LOGIKAI kiteltolásként értem.
Így : [link]
Az egyik irány a kettővel való szorzás, ami tulajdonképpen az önmagával való összeadás. Az összeadás megvalósítható bitműveletekkel. Megjegyzés: párhuzamos környezetben ellenjavallt ez a módszer.
A másik irány a felezés, amit sokkal nehezebb kifejezni.
"Nem lehet."
De, LEHET! :D
Ugyanis végiggondoltam ismét, és elkezdtem leimplementálni, és a baloldali bitmozgatást már sikerült.
Majd ha ismét annál a gépnél leszek, amin megvan a kód - meg előtte implementáltam a másik oldali biteltolást is, akkor felteszem.
Előlegbe annyit : elég implementálni MIND A KETTŐT az 1-es jobboldali paraméterre (értsd.: x << 1 és x >> 1), utána ez ciklussal kiterjeszthető x >> a (x << a) esetén a tetszőleges (egész) paraméterre.
ÉS ez máris könnyít a dolgon :)
P.S.: rendes leszek, és nem pontozom le a kommenteket :D
Nem lehet. Lehet félreértettünk valamit a kérdésedben, és nem csak az említett logikai műveleteket használod, hanem pl if-et és egyéb konstansokat is.
Nyilván az utóbbi esetben bármit meg lehet csinálni, mert minden számhoz van egy másik szám, amivel ha össze XOR-olod, akkor kijön az eredeti szám 2x-ese (vagy fele).... de ez már nem arról szól, amit kérdeztél.
"Lehet félreértettünk valamit a kérdésedben, és nem csak az említett logikai műveleteket használod"
Bocs, igen, neked van igazad : a kérdés nem egyértelmű! :D
BOCS!
Cserébe mindenkinek +1.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!