* Algorithm to convert bases?
@ 1997-03-28 0:00 Centaury
1997-03-28 0:00 ` Michael F Brenner
0 siblings, 1 reply; 2+ messages in thread
From: Centaury @ 1997-03-28 0:00 UTC (permalink / raw)
Does anybody know how the algorithm of converting a decimal to binary
number and vice versa?
What about conversion to octal and hexadecimal numbers to decimals?
Thanx!
--
Please mail replies to :
utopian@pl.jaring.my
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: Algorithm to convert bases?
1997-03-28 0:00 Algorithm to convert bases? Centaury
@ 1997-03-28 0:00 ` Michael F Brenner
0 siblings, 0 replies; 2+ messages in thread
From: Michael F Brenner @ 1997-03-28 0:00 UTC (permalink / raw)
This question is vague, and can mean various things, so I will go ahead
and guess that you are not interested in the algorithm itself (which
appears in Knuth, The Art of Computer Programming, published by Addison
Wesley). Instead, I will guess that you wish to know some Ada code to
convert them. Now I have to guess whether you wish these numbers to be
constants, variables, or elements of a data file. I will guess that
these numbers are elements of a data file. Now I have to guess whether
you wish these numbers to be whole numbers, fractions, or mixed with
a whole number part and a fractional part. I will guess that you wish
to do mixed numbers. Now, I will guess that you are coding in Ada-83 and
have violated the rule about always having at least one digit before and
one digit after the decimal point, therefore you wish to use a finite
state automaton to read them in the way Ada-95 would anyway. Finally,
I guess that the actual conversion will use something like what is
in the Ada Language Reference Manual in paragraphs 3.5(52) and A.10.1(55).
I guess that you are not asking for me to copy those paragraphs here,
because you can download them yourself from many places, on the net,
such as ftp://cs.nyu.edu/pub/gnat/rm9x-v5.95/rm.doc.gz.
Therefore, the complete answer to your question is given by the floating
point portion of my finite state machine (which is Free code subject to
the Free Software Foundations General Public Library License):
type states is (error_state,
start_state,
prime_state,
prime_any_state,
prime_prime_state,
minus_state,
minus_minus_state,
quote_state,
quote_quote_state,
alphabetic_state,
alphabetic_underline_state,
digit_state,
digit_base_state,
digit_underline_state,
digit_period_state,
digit_period_digit_state,
digit_period_underline_state,
digit_exponent_state,
digit_exponent_digit_state,
digit_exponent_underline_state,
period_state,
asterisk_state,
slash_state,
colon_state,
lt_state,
gt_state,
eq_state,
done_state,
done_backup_state,
done_backup_two_state);
err: constant states := error_state;
str: constant states := start_state;
p : constant states := prime_state;
pa : constant states := prime_any_state;
pp : constant states := prime_prime_state;
m : constant states := minus_state;
mm : constant states := minus_minus_state;
q : constant states := quote_state;
qq : constant states := quote_quote_state;
a : constant states := alphabetic_state;
au : constant states := alphabetic_underline_state;
d : constant states := digit_state;
db : constant states := digit_base_state;
du : constant states := digit_underline_state ;
dp : constant states := digit_period_state;
dpd: constant states := digit_period_digit_state;
dpu: constant states := digit_period_underline_state;
e : constant states := digit_exponent_state;
ed : constant states := digit_exponent_digit_state;
edu: constant states := digit_exponent_underline_state;
per: constant states := period_state;
ast: constant states := asterisk_state;
sla: constant states := slash_state;
col: constant states := colon_state;
lt: constant states := lt_state;
gt: constant states := gt_state;
eq: constant states := eq_state;
z : constant states := done_state;
zb : constant states := done_backup_state;
zb2: constant states := done_backup_two_state;
type classes is (
period_class,
blank_or_tab_class,
number_class,
alphabetic_class,
the_letter_e_class,
underline_class,
comments_class,
prime_class,
quote_class,
pound_sign_class,
minus_sign_class,
operator_class,
colon_class,
semi_colon_class,
asterisk_class,
slash_class,
lt_class,
gt_class,
eq_class,
end_of_line_class,
end_of_file_class);
type transition_matrices is array (states, classes) of states;
transition_matrix: constant transition_matrices := (
err => (err,err,err,err,err,err,err,err,err,err,err,err,err,err,
err,err,err,err,err,err,err),
str => (per,str,d, a, a, err,err,p, q, err,m, z, col,z,
ast,sla,lt, gt, eq, str,z ),
p => (pa, pa, pa, pa, pa, pa, pa, pp, pa, pa, pa, pa, pa, pa,
pa, pa, pa, pa, pa, zb, err),
pa => (zb2,zb2,zb2,zb2,zb2,zb2,zb2,z, zb2,zb2,zb2,zb2,zb2,zb2,
zb2,zb2,zb2,zb2,zb2,zb2,err),
pp => (err,err,err,err,err,err,err,z, err,err,err,err,err,err,
err,err,err,err,err,err,err),
m => (err,zb, zb, zb, zb, err,err,zb, zb, err,mm, err,err,err,
zb, err,err,err,err,zb, err),
mm => (mm, mm, mm, mm, mm, mm, mm, mm, mm, mm, mm, mm, mm, mm,
mm, mm, mm, mm, mm, str,z ),
q => (q, q, q, q, q, q, q, q, qq, q, q, q, q, q,
q, q, q, q, q, err,err),
qq => (zb, z, q, zb, zb, zb, zb, zb, q, zb, zb, zb, zb, zb,
zb, zb, zb, zb, zb, zb, err),
a => (zb, zb, a, a, a, au, err,zb, zb, zb, zb, zb, zb, zb,
zb, zb, zb, zb, zb, zb, err),
au => (err,err,a, a, a, err,err,err,err,err,err,err,err,err,
err,err,err,err,err,err,err),
d => (dp, zb, d, err,e, du, err,err,err,db, zb, zb, zb, zb,
zb, zb, zb, zb, zb, zb, err),
db => (err,err,db, db, db, db, err,err,err,d, err,err,err,err,
err,err,err,err,err,err,err),
du => (err,err,d, d, err,err,err,err,err,err,err,err,err,err,
err,err,err,err,err,err,err),
dp => (zb2,err,dpd,err,err,err,err,err,err,err,err,err,err,err,
err,err,err,err,err,err,err),
dpd => (zb, zb, dpd,err,e, dpu,err,err,err,err,zb, zb, zb, zb,
zb, zb, zb, zb, zb, zb, err),
dpu => (err,err,dpd,err,err,err,err,err,err,err,err,err,err,err,
err,err,err,err,err,err,err),
e => (err,e, ed, err,err,err,err,err,err,err,ed, err,err,err,
err,err,err,err,err,err,err),
ed => (err,zb, ed, err,err,edu,err,err,err,err,zb, zb, zb, zb,
zb, zb, zb, zb, zb, zb, err),
edu => (err,err,ed, err,err,err,err,err,err,err,err,err,err,err,
err,err,err,err,err,err,err),
per => (z, zb, zb, zb, zb, err,err,zb, zb, zb, err,err,err,err,
err,err,err,err,err,zb, err),
ast => (zb, zb, zb, zb, zb, zb, zb, zb, zb, zb, zb, zb, zb, zb,
z, zb, zb, zb, zb, zb, err),
sla => (zb, zb, zb, zb, zb, zb, zb, zb, zb, zb, zb, zb, zb, zb,
zb, zb, zb, zb, z, err,err),
col => (zb, zb, zb, zb, zb, zb, zb, zb, zb, zb, zb, zb, zb, zb,
zb, zb, zb, zb, z, err,err),
lt => (zb, zb, zb, zb, zb, zb, zb, zb, zb, zb, zb, zb, zb, zb,
zb, zb, z, z, z, err,err),
gt => (zb, zb, zb, zb, zb, zb, zb, zb, zb, zb, zb, zb, zb, zb,
zb, zb, zb, z, z, err,err),
eq => (zb, zb, zb, zb, zb, zb, zb, zb, zb, zb, zb, zb, zb, zb,
zb, zb, zb, z, zb, err,err),
z => (err,err,err,err,err,err,err,err,err,err,err,err,err,err,
err,err,err,err,err,err,err),
zb => (err,err,err,err,err,err,err,err,err,err,err,err,err,err,
err,err,err,err,err,err,err),
zb2 => (err,err,err,err,err,err,err,err,err,err,err,err,err,err,
err,err,err,err,err,err,err));
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~1997-03-28 0:00 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1997-03-28 0:00 Algorithm to convert bases? Centaury
1997-03-28 0:00 ` Michael F Brenner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox