(SR-52) Binary-to-Decimal conversion
|
01-17-2020, 04:49 PM
(This post was last modified: 01-17-2020 04:50 PM by SlideRule.)
Post: #1
|
|||
|
|||
(SR-52) Binary-to-Decimal conversion
Binary-to-decimal number conversion, often needed when working with digital equipment, can require laborious raising to powers and addition. This program, designed for an SR-52 calculator, provides a convenient method of converting 8-, 16-, 24-, and 32-bit words to their decimal equivalents.
To use the program, binary words are entered into the calculator eight bits at a time, most significant bit first. (Since the SR-52 has a 10-digit mantissa, the program ignores the first two digits entered and only operates on the last eight binary digits.) The user then presses the SR-52's user-defined key A, and the program displays the decimal. Here's a typical 8 -bit conversion: ignored ┌┐ 1 1 1 1 1 0 1 0 1 0 ← 1) Enter binary number in display └────────┘ 8-bits ← 2) Press A Key 2 3 4 ← 3) Calculator Displays decimal equivalent To obtain 16-, 24-, and 32-bit conversions, do the above operation for the first eight bits, but for each additional eight bits entered, press the user-defined key B, which will sum that 8-bit conversion with all previous conversions, to a maximum of 32 bits. The conversion algorithm is shown here in flowchart [attachment=8020] and SR-52 program-listing form. Location Codes Keys 000 - 003 46 11 42 00 *LBL A STO 0 004 - 007 00 00 42 00 0 0 STO 0 008 - 011 03 42 00 04 3 STO 0 4 012 - 015 42 00 05 08 STO 0 5 8 016 - 019 44 00 05 01 SUM 0 5 1 020 - 023 94 44 00 04 +/- SUM 0 4 024 - 027 46 79 01 44 *LBL *6 1 SUM 028 - 031 00 04 43 00 0 4 RCL 0 032 - 035 00 55 01 00 0 ÷ 1 0 036 - 039 95 42 00 01 = STO 0 1 040 - 043 51 78 43 00 SBR *5 RCL 0 044 - 047 04 75 43 00 4 - RCL 0 048 - 051 05 95 42 00 5 = STO 0 052 - 055 06 43 00 01 6 RCL 0 1 056 - 059 75 43 00 02 - RCL 0 2 060 - 063 95 90 68 43 = *if0 *8 RCL 064 - 067 00 06 90 67 0 6 *if0 *7 068 - 071 02 45 43 00 2 y" RCL 0 072 - 075 04 95 44 00 4 = SUM 0 076 - 079 03 43 00 02 3 RCL 0 2 080 - 083 42 00 00 41 STO 0 0 GTO 084 - 087 79 46 67 43 *6 *LBL *7 RCL 088 - 091 00 03 81 46 0 3 HLT *LBL 092 - 095 68 43 00 06 *8 RCL 0 6 096 - 099 90 67 43 00 *if0 *7 RCL 0 100 - 103 02 42 00 00 2 STO 0 0 104 - 107 41 79 46 78 GTO *6 *LBL *5 108 - 111 75 93 05 54 - . 5 ) 112 - 115 57 00 52 22 *fix 0 EE INV 116 - 119 52 22 57 42 EE INV *fix STO 120 - 123 00 02 56 46 0 2 *rtn *LBL 124 - 127 12 42 00 00 B STO 0 0 128 - 131 41 00 01 05 GTO 0 1 5 It works by performing repeated divisions by 10, splitting the dividend into integral and fractional parts, and then looking to see if the fractional part is a 1 or 0. If it is a 1, the program raises 2 to appropriate power and sums it into register 03. After the program has looped through eight bits, it recalls register 03 and halts. source: RCA Engineer, Engineering and Research Notes, Binary-to-decimal conversion program for a programmable calculator, 1977-08/09, pg.76, A.R. Campbell BEST! SlideRule |
|||
06-16-2022, 06:54 AM
(This post was last modified: 06-17-2022 06:45 AM by Thomas Klemm.)
Post: #2
|
|||
|
|||
RE: (SR-52) Binary-to-Decimal conversion
TI-57
Code: 00 32 0 : STO 0 Example 1101 RST R/S 13. 11011001 RST R/S 217. HP-25 Code: 01: 23 00 : STO 0 Example CLEAR PRGM 1101 R/S 13.00 11011001 R/S 217.00 (01-17-2020 04:49 PM)SlideRule Wrote: … provides a convenient method of converting 8-, 16-, 24-, and 32-bit words to their decimal equivalents. I'm leaving that part as an exercise to the reader. |
|||
06-17-2022, 12:47 AM
Post: #3
|
|||
|
|||
RE: (SR-52) Binary-to-Decimal conversion
Great implementation for the TI-57 and HP-25.
It took me a while to understand where the 8 was coming from (hint: 10 - 2 = 8) and more generally why this method works at all. Nit: in the TI-57 program, "0 x:t" can be replaced with "C.t" to save one step. |
|||
06-17-2022, 06:48 AM
Post: #4
|
|||
|
|||
RE: (SR-52) Binary-to-Decimal conversion
(06-17-2022 12:47 AM)pauln Wrote: It took me a while to understand where the 8 was coming from (hint: 10 - 2 = 8) and more generally why this method works at all. I've explained it here in case of the decimal-to-binary conversion. But it works similarly if 2 and 10 are swapped. Here are some programs for the general case n-to-10 or 10-to-n: (06-17-2022 12:47 AM)pauln Wrote: Nit: in the TI-57 program, "0 x:t" can be replaced with "C.t" to save one step. Good catch. Thank you for the notification. I have adjusted the listing accordingly. The TI-57 was the first calculator I wrote programs for. A colleague at school kindly loaned it to me for a while. But in the end I got an HP-41CV and I have no regrets. |
|||
06-17-2022, 07:37 AM
Post: #5
|
|||
|
|||
RE: (SR-52) Binary-to-Decimal conversion
Here's a variant for the HP-25 that uses one more step but only one instead of three registers:
Code: 01: 23 00 : STO 0 |
|||
06-17-2022, 10:38 PM
(This post was last modified: 08-20-2022 11:48 AM by pauln.)
Post: #6
|
|||
|
|||
RE: (SR-52) Binary-to-Decimal conversion
Another way of looking at this method is to notice that it transforms the value in register 0 from:
\(a_0 + a_1 \cdot 10 + \cdots + a_n \cdot 10^n\) into \(a_0 + a_1 \cdot 2 + \cdots + a_n \cdot 2^n\) To do so, it transforms \(10^k\) into \(2^k\) using the following general identity: \(a^k - b^k = (a - b)(a^{k-1} + a^{k-2} \cdot b + \cdots + b^{k-1})\) Applied to a = 10 and b = 2, we get: \(10^k - 2^k = 8 \cdot (10^{k-1} + 10^{k-2} \cdot 2 + \cdots + 2^{k-1})\) This explains the 8 at the beginning of the program as well as the values in register 2 (initially 8 and then 16, 32, 64, ...). |
|||
06-18-2022, 05:23 AM
Post: #7
|
|||
|
|||
RE: (SR-52) Binary-to-Decimal conversion
(06-17-2022 10:38 PM)pauln Wrote: I'm guessing this forum doesn't support Latex-like formatting for math expressions ? A search in the Test forum with the keyword latex gives currently the following list:
Examples \(a_0 + a_1 \cdot 10 + \cdots + a_n \cdot 10^n\) \[a_0 + a_1 \cdot 2 + \cdots + a_n \cdot 2^n\] \( \begin{align} a^k - b^k &= (a - b)\left(a^{k-1} + a^{k-2} \cdot b + \cdots + b^{k-1}\right) \\ \\ 10^k - 2^k &= 8\left(10^{k-1} + 10^{k-2} \cdot 2 + \cdots + 2^{k-1}\right) \\ \end{align} \) Hint: You can see the code if you quote a post. |
|||
06-18-2022, 05:36 AM
Post: #8
|
|||
|
|||
RE: (SR-52) Binary-to-Decimal conversion | |||
« Next Oldest | Next Newest »
|
User(s) browsing this thread: 1 Guest(s)