The Museum of HP Calculators


Base Conversion (2) for the HP-41

This program is Copyright © 2007 by Jean-Marc Baillard and is used here by permission.

This program is supplied without representation or warranty of any kind. Jean-Marc Baillard and The Museum of HP Calculators therefore assume no responsibility and shall have no liability, consequential or otherwise, of any kind arising from the use of this program material or any part thereof.

Overview

-2 programs are listed below:

-The first one only deals with ( positive ) integers and bases b < 101
  If  10 < b < 101, each "digit" is represented by 2 decimal digits from the decimal point:
  For instance  N = 1A2EF ( base 16 ) must be keyed in   110021415  ( N = 107247 in decimal )

-The second program also deals with ( positive ) fractional arguments
  If   10 < b < 101,   each "digit" is represented by 2 decimal digits from the decimal point
  If 100 < b < 1001, ----------------------------- 3 ------------------------------------  and so on

  For instance, in base 234,   R = 5,233,001.122,   is a number with 3 "digits" in its integer part ( 5  233  1 ) and 1 "digit" in its fractional part ( 122 )
  ( in decimal, R = 328303.5214 )

-Roundoff errors are often unavoidable for fractional numbers
 

Integer Arguments and b < 101
 

Data Registers: /
Flags: /
Subroutines:  /
 

01  LBL "b-X"
02  10
03  X<Y?
04  X^2
05  STO T
06  CLX
07  STO M
08  SIGN
09  X<> Z
10  LBL 01
11  R^
12  ST/ Y
13  RDN
14  FRC
15  ST- L
16  R^
17  ST* Y
18  X<> T
19  ST* Y
20  X<> Z
21  ST* Z
22  X<>Y
23  ST+ M
24  X<> L
25  X#0?
26  GTO 01
27  X<> M
28  RTN
29  LBL "X-b"
30  SIGN
31  0
32  LASTX
33  R^
34  LBL 02
35  STO M
36  X<>Y
37  MOD
38  ST- M
39  X<> L
40  ST/ M
41  RCL M
42  X<>Y
43  R^
44  ST* L
45  X<> L
46  ST+ T
47  CLX
48  10
49  X<Y?
50  ST* X
51  ST* L
52  X<> L
53  RDN
54  X<>Y
55  X#0?
56  GTO 02
57  STO M
58  X<> Z
59  END

( 103 bytes / SIZE 000 )
 

1-Base b >>> Base 10 ( LBL "b-X" )
 
      STACK        INPUTS      OUTPUTS
           Y             Nb             b
           X              b            N10

2-Base 10 >>> Base b ( LBL "X-b" )
 
      STACK        INPUTS      OUTPUTS
           Y             N10             b
           X              b            Nb

Example1:    Convert   (1234)7    to the decimal scale and then to the nonary scale

  1234  ENTER^
        7  XEQ "b-X"   >>>   466
                                              9   XEQ "X-b"  ( or simply R/S )  >>>   567     whence   (1234)7  =  466  =   (567)9

Example2:   Convert  (16267)12  to the decimal scale and then to the hexadecimal scale and the septenary scale.

   106020607  ENTER^
                 12  XEQ "b-X"  >>>  31471
                                                         16   R/S  yields  7101415     whence   (16267)12  =  31471  =  (7AEF)16

-Similarly,    31471  ENTER^   7   XEQ "X-b"  gives   160516     whence   (16267)12  =   (160516)7
 

Fractional Arguments
 

Data Registers: /
Flags: /
Subroutines:  /
 

01  LBL "B-X"
02  CLA
03  ENTER^
04  DSE X
05  LOG
06  INT
07  1
08  +
09  STO N
10  X<> Z
11  ENTER^
12  LOG
13  RCL N
14  /
15   E2
16  +
17  INT
18   E2
19  -
20  R^
21  X<>Y
22  Y^X
23  STO Z
24  CLX
25  RCL N
26  ST* L
27  X<> L
28  10^X
29  /
30  LBL 01
31  ENTER^
32  INT
33  ST- Y
34  X<> Z
35  ST* Z
36  X<> Z
37  ST+ M
38  R^
39  ST/ T
40  RDN
41  CLX
42  RCL N
43  10^X
44  *
45  X#0?
46  GTO 01
47  X<> M
48  CLA
49  RTN
50  LBL "X-B"
51  CLA
52  ENTER^
53  DSE X
54  LOG
55  INT
56  1
57  +
58  STO N
59  STO O
60  CLX
61  RCL Z
62  LOG
63  RCL Y
64  LOG
65  /
66  INT
67  2
68  +
69  ST* O
70  CLX
71  11
72  STO P              ( not  STOP  but synthetic  STO P )
73  RDN
74  LBL 02
75  RCL N
76  ST- O
77  RCL O
78  X<>Y
79  /
80  RCL Y
81  X<>Y
82  Y^X
83  RDN
84  X<> T
85  MOD
86  ST- Y
87  X<>Y
88  LASTX
89  /
90  RCL O
91  10^X
92  *
93  ST+ M
94  X<> Z
95  DSE P
96  GTO 02
97  RCL M
98  CLA
99  END

( 152 bytes / SIZE 000 )
 

1-Base B >>> Base 10 ( LBL "B-X" )
 
      STACK        INPUTS      OUTPUTS
           Y             Nb             b
           X              b            N10

2-Base 10 >>> Base B ( LBL "X-B" )
 
      STACK        INPUTS      OUTPUTS
           Y             N10             b
           X              b            Nb

Example1:    Convert   (12.34)7    to the decimal scale and then to the nonary scale

  12.34  ENTER^
         7  XEQ "B-X"   >>>   9.510204082
                                                     9           XEQ "X-b"  ( or simply R/S )  >>>   10.45284032

             whence   (12.34)7  =  9.510204082  =   (10.45284032)9

Example2:    Convert  (4,123.092,046)128    to the decimal scale and then to the scale B = 41

   4,123.092,046  ENTER^
           128        XEQ "B-X"  >>>   635.7215576
                                                              41            R/S  >>>   15,20.29,23,38

           whence     (4,123.092,046)128  =  635.7215576  =  (15,20.29,23,38)41
 

References:     Abramowitz and Stegun , "Handbook of Mathematical Functions" -  Dover Publications -  ISBN  0-486-61272-4
                           Philippe Descamps & Jean-Jacques Dhenin , "Programmer HP-41" - PSI - ISBN 2-86595-056-5  ( in French )
 
 
 

Go back to the HP-41 software library
Go back to the general software library
Go back to the main exhibit hall