[elektro] pascal 2.
Moczik Gabor
pm_levlista at progzmaster.hu
Wed Jul 28 09:45:51 CEST 2010
On Wed, 28 Jul 2010 at 01:03:13, Erdos Zoltan wrote:
> ph:= p div 1048576 ;
> ps:= hx[ph] ;
> p := p-ph*1048576 ;
>
> ph:= p div 65536 ;
> ps:= ps+hx[ph] ;
> p := p-(ph*65536) ;
Annyit csinál, hogy a helyiértékeknek megfelelően elosztja a kiindulási számot.
A div egész osztás, tehát ha p nem osztható pontosan 1048576-tal, akkor annyit
ad vissza amennyi még "egésszer megvan benne". Utána azért szorozza vissza, hogy
megtudja mennyi a maradék. Pascalban nincs "osztás maradéka" operátor, de
mondjuk erre különben se lenne hatékony.
Mindenesetre így sem hatékony, ez a függvény eszméletlen jó példa arra, hogy ne
írjunk programot, mi történik akkor, ha valaki programozó létére nem ismeri a
bináris számábrázolás rejtelmeit.
Info által írt megoldás a követendő. Annyi kiegészítéssel, hogy ha a 32-bites
shift "drága" (8-bites architektúrán például), akkor a 8 bites darabok
shiftelgetéséből célszerűbb megoldani, így még AND is kevesebb kell hozzá.
More information about the Elektro
mailing list