BIT%
Syntax |
BIT% (number%,bitnr) with bitnr=0..15 |
Location |
BIT |
All numbers are internally stored as a series of values, each of which can either be 1 or 0 (or, if you prefer, true or false). This is known as the binary system. The set of digits which make up a binary number are known as a stream of bits.
The function BIT% returns the status of a specified bit of an integer number%, a value of either 0 or 1. Bit 0 means the rightmost bit, whereas bit 15 would be the leftmost.
Example 1
Here is a function which converts a number to the binary system. It allows a greater range than BIN$ and needs just one parameter. The first version needs the REV$ and LOG2 extensions, the second does not.
Version 1:
100 DEFine FuNction BIT$ (x%)
110 LOCal b$,i: b$=""
120 FOR i=0 TO LOG2(ABS(x%)):b$=b$ & BIT%(x%,i)
130 RETurn REV$(b$)
140 END DEFine BIT$
Version 2:
100 DEFine FuNction BIT$ (x%)
110 LOCal b$,i: b$=""
120 FOR i=0 TO LN(ABS(x%))/LN(2): b$=BIT%(x%,i) & b$
130 RETurn b$
140 END DEFine BIT$
Example 2
The following logical function returns 1 (true) if the given parameter was an upper case character, or 0 (false) if it was lower case. This function will work with all international character sets supported on the original QL.
100 DEFine FuNction UPPER% (c$)
110 RETurn NOT BIT%(CODE(c$),5) ^^ BIT%(CODE(c$),7)
120 END DEFine UPPER%
In any given character, bit 5 indicates the case and bit 7 the character set.
CROSS-REFERENCE
BIN$ also converts a decimal number to a binary and BIN back again. UPPER$ returns a string in upper characters.
The length of a number x in binary form is INT(LOG2 (ABS (x))+1) .