05-09-2014, 04:34 PM
For an IP address such as 102.16.66.254 converts to binary with leading zeros- useful for subnetting.
Place the IP address on the stack:
102 ENTER
16 ENTER
66 ENTER
254 fB (run the program)
The result is:
t: .01100110
z: .00010000
y: .01000010
x: .11111110
Use "roll down" to see the full address.
Runs in about 1 second on the LE, about 1 minute on the HP15C
Program listing (ignore everything to the right of each of the //):
LBL B
FIX 8
STO 1 //store base 10 numbers
ROLL DN
STO 2
ROLL DN
STO 3
ROLL DN
STO 4
1 // 1.00401 is for loop control
.
0
0
4
0
1
STO I
LBL 2
RCL (i) //B10 #
8
CHS
STO 9 //place value
0
STO 0 //B2 to be built
LBL 0
RCL (i)
X=0 //if x=0 the number has been converted
GTO 1
INT
2 //divide by 2 method of base conversion
/
STO (i)
FRAC
ENTER
+
RCL 9 //place value
10^x
*
STO +0 //B2# building
1
STO +9 //increment place value
GTO 0
LBL 1
RCL 0 //B2 converted
STO (i)
ISG I // if we have reached 4, all octets are converted
GTO 2
RCL 4
RCL 3
RCL 2
RCL 1
RTN
Place the IP address on the stack:
102 ENTER
16 ENTER
66 ENTER
254 fB (run the program)
The result is:
t: .01100110
z: .00010000
y: .01000010
x: .11111110
Use "roll down" to see the full address.
Runs in about 1 second on the LE, about 1 minute on the HP15C
Program listing (ignore everything to the right of each of the //):
LBL B
FIX 8
STO 1 //store base 10 numbers
ROLL DN
STO 2
ROLL DN
STO 3
ROLL DN
STO 4
1 // 1.00401 is for loop control
.
0
0
4
0
1
STO I
LBL 2
RCL (i) //B10 #
8
CHS
STO 9 //place value
0
STO 0 //B2 to be built
LBL 0
RCL (i)
X=0 //if x=0 the number has been converted
GTO 1
INT
2 //divide by 2 method of base conversion
/
STO (i)
FRAC
ENTER
+
RCL 9 //place value
10^x
*
STO +0 //B2# building
1
STO +9 //increment place value
GTO 0
LBL 1
RCL 0 //B2 converted
STO (i)
ISG I // if we have reached 4, all octets are converted
GTO 2
RCL 4
RCL 3
RCL 2
RCL 1
RTN