RPN: HP 32S & DM42: Converting Real Numbers to Hexadecimal Approximations
Introduction
We know calculators that have base conversions easily convert integers to different bases. But what about all real numbers? Not so much. Today’s blog will tackle it.
The procedure given today should work for converting from decimal to octal, binary, and hexadecimal. I chose hexadecimal:
0.A B C D… _16
The digit A is in units of 1/16.
The digit B is in units of 1/16^2 or 1/256.
The digit C is in units of 1/16^3 or 1/4096.
The digit D is in units of 1/16^2 or 1/65536.
and so on.
Note: The procedure considers positive real numbers only.
Example: Convert 7.86 to hexadecimal using 4 places
In hexadecimal, 4 places translates to terms of 1/65536.
Separate 7.86 into its integer and fractional parts. |
Integer Part: 7 Fractional Part: 0.86 |
Convert the fractional part to n parts of 65536. (16^4)* |
0.86 * 65536 = 56360.96 |
Round n to the nearest integer. Use the formula: int(n + 0.5) = int(n + 1/2) |
Int(56360.96 + 0.5) = 53361 (round(56360.96, 0) = 53361) |
Convert both original integer part and the last result to hexadecimal. |
Integer Part: 7_10 → 7_16 Frac in terms of 65536: 53361_10 → DC29_16 |
**If the fractional part has less than four* digits showing in the calculator, pad the converted part with zeros on the left. |
|
The approximate answer reads as: |
7.86_10 → 7.DC29_16 |
Recall in Hexadecimal: A=10, B=11, C=12, D=13, E=14, F=15. |
|
* precision: number of places.
HP 32S/HP 32SII/DM32 Code
H01 LBL H
H02 ENTER
H03 IP
H04 x<>y
H05 FP
H06 16
H07 4 (** - accuracy level, number of places)
H08 y^x
H09 ×
H10 2
H11 1/x
H12 +
H13 IP
H14 HEX
H15 STOP
H16 DEC
H17 RTN
HP 42S/DM42 Code
01 LBL “→HEX”
02 ENTER
03 IP
04 x<>y
05 FP
06 16
07 4 (** - accuracy level, number of places)
08 Y↑X
09 ×
10 0.5
11 +
12 IP
13 HEXM
14 STOP
15 EXITALL
16 RTN
When the program stops initially, the results are shown as follows:
Y: integer part
X: fractional part – right justified
Remember the number of places (precision) because if the fractional part has less digits, pad zeroes to the left.
Examples
n = precision = 4
Decimal |
Y: Hex Integer |
X: Hex Fractional (displayed) |
Result (base 16) |
3.5 |
3 |
8000 |
3.8000 |
π |
3 |
243F |
3.243F |
√2 |
1 |
6A0A |
1.6A0A |
0.6732 |
0 |
AC57 |
0.AC57 |
0.0002 |
0 |
D |
0.000D |
e^4.1 |
3C |
571D |
3C.571D |
8.2^1.7 |
23 |
C460 |
23.C460 |
Eddie
All original content copyright, © 2011-2025. Edward Shore. Unauthorized use and/or unauthorized distribution for commercial purposes without express and written permission from the author is strictly prohibited. This blog entry may be distributed for noncommercial purposes, provided that full credit is given to the author.
All posts are 100% generated by human effort. The author does not use AI engines and never will.