Difference between revisions of "mirc/identifiers/\$biton"
< mirc‎ | identifiers

Commands & Identifiers
Basics
Events
Matching Tools
Data Storage
Control Structures
GUI Scripting
Sockets
Security
Other
v · d · e

\$biton returns N with the Bth bit set to 1.

## Synopsis

```\$biton(<N>,<B>)
```

## Parameters

N = Base-10 Number in the range + 2^32-1 through -2^31+1
B = Counting from the right-most bit, the bit position to set as 1

None

## Example

\$biton returns N with the B position set to 1. If it's already 1, the number is unaltered.

```//var %n 10 | echo -a \$biton(%n,3)
; returns 14
```

Here's how the answer was calculated:

1. Convert base-10 N to binary.
2. Count columns from the right, where the right-most column is 1
3. The Bth bit of the binary number counting from the right is set to 1.
4. Return the possibly altered number
```//var %n 10 | echo -a \$base(%n,10,2,32) | echo -a \$str(-,24) \$+ 87654321 | echo -a \$base(\$biton(%n,3),10,2,32) \$base(1110,2,10)
; returns:
00000000000000000000000000001010
------------------------87654321
00000000000000000000000000001110 14
```

If N is 2^32 or greater, returns 2^32 -1
If N is less than -2^31+1, returns 2^(B-1) +1

Using \$biton and \$bitoff, you can store several variables as bits within a single variable, instead of creating a separate variable for each.
The /window switch -wN uses bit settings, with default 3 if N not used.

```var %treebarsetting \$true
var %switchbarsetting \$true
var %n
if (%switchbarsetting) var %n \$biton(%n,1)
if (%treebarsetting) var %n \$biton(%n,2)
if (%n == \$null) var %n 3
```
```; \$biton can be simulated by using \$or to set the appropriate bit to 1
//var %n 10 | var %b 3 | echo -a within the valid number range, %n \$biton(%n,%b) is the same as \$or( %n , \$calc( 2^ (%b -1) ) )
```

## Compatibility

Note: Unless otherwise stated, this was the date of original functionality.
Further enhancements may have been made in later versions.