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
PRINT BIN ( ‘1001’ )
will print the value 9
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’).