! normialize a number
Norm
bne norm1
bra normialize.zero
normt
shift left r1
dec r2
norm1
bra not normialized norm
..
! normalizeed number r1
! exponent r2
Do any modern languages let you write this other than
…
if(man==0) goto zero;
goto end;
do{
man = man << 1;
exp–;
end:
}
until( bit #n in man == 1);
(defun normalize (man exp &optional (word-size 16))
(if (zerop man)
(values 0 0)
(loop with mask = (ash 1 (1- word-size))
for m = man then (ash m 1)
for e = exp then (1- e)
until (plusp (logand m mask))
finally (return (values m e)))))