BIN

Syntax

BIN (binary$) or

BIN (binary) where binary=0..111111

Location

Toolkit II, THOR XVI

This function returns the decimal value of a binary number (given as a string). For small numbers, a floating point number can be used but will cause problems if this is not a valid binary number.

Examples

  1. PRINT BIN ( ‘1001’ )

will print the value 9

  1. As it stands, the function BIN cannot handle binary dots

(eg. 1001.101=9.625), therefore a BASIC function to provide this facility is:

100 DEFine FuNction BINN(a$)
110   LOCal i,dot,dota,value_a,loop
120   IF a$='' THEN RETurn 0
130   FOR i=1 TO LEN(a$): IF a$(i) INSTR '10.'=0: REPORT -17: STOP
140   dot='.' INSTR a$: IF dot=0 THEN RETurn BIN(a$)
150   value_a=0:dota=0
160   IF dot>1 THEN value_a=value_a+BIN(a$(1 TO dot-1))
170   IF '.' INSTR a$(dot+1 TO ): REPORT -17: STOP
180   REPeat loop
190     IF dot>=LEN(a$):EXIT loop
200     a$=a$(dot+1 TO )
210     dot='1' INSTR a$: IF NOT dot THEN EXIT loop
220     value_a=value_a+1/(2^(dot+dota)):dota=dota+dot
230   END REPeat loop
240   RETurn value_a
250 END DEFine BINN

NOTE

Any digit other than 0 or 1 will produce odd results.

CROSS-REFERENCE

BIN$ works the other way around, converting decimal numbers into their binary equivalent. See HEX and HEX$ for the hexadecimal versions. BIT% is also useful.

SMS users can achieve the same thing by using, for example PRINT%1001 instead of PRINTBIN(‘1001’).