{{fbdoc item="title" value="BITSET"}}----
Gets the value with a specified bit set, from a copied integer.

{{fbdoc item="syntax"}}##
	[[KeyPgPpdefine|#define]] **Bitset**( //value//, //bit_number// ) ((//value//) [[KeyPgOpOr|or]] ([[KeyPgCast|Cast]]([[KeyPgTypeof|TypeOf]](//Value//), 1) [[KeyPgOpShiftLeft|shl]] (//bit_number//)))
##
{{fbdoc item="usage"}}##
	//result// = **Bitset**( //value//, //bit_number// )
##
{{fbdoc item="param"}}
	##//value//##
		The integer value.
	##//bit_number//##
		The index of the bit to set.

{{fbdoc item="ret"}}
	Returns the integer value with the specified bit set.

{{fbdoc item="desc"}}
	This macro expands to a copy of the integer ##//value//## with the specified ##//bit_number//## set (to //on//, or `##1##`). Behaves as `##//value// [[KeyPgOpOr|Or]] (1 [[KeyPgOpShiftLeft|Shl]] //bit_number//)##`.
	To set a specified bit in a variable, the following assignment can be used: ##//variable// = **Bitset**( //variable//, //bit_number// )##
	
	The valid range of values for ##//bit_number//## depends on the size, in bits, of `##[[KeyPgTypeof|Typeof]](//value//)##`, which is `##0##` (from the lowest bit) through `##[[KeyPgSizeof|Sizeof]](//value//) * 8 - 1##` (up to the highest bit). See [[TblVarTypes|Standard Datatype Limits]] for a table of the standard datatypes and their sizes.
	For the ##//bit_number//## values outside the valid range, the results of this macro are undefined.

{{fbdoc item="ex"}}
{{fbdoc item="filename" value="examples/manual/bits/bitset.bas"}}%%(freebasic)
print bin(bitset(&b10001,2))
print bitset(4, 0)
print hex(bitset(1ull, 63))
%%
	will produce the output:

%%10101
 5
8000000000000001
%%

{{fbdoc item="lang"}}
	- Not available in the //[[CompilerOptlang|-lang qb]]// dialect unless referenced with the alias ##**""__Bitset""**##.

{{fbdoc item="diff"}}
	- New to ""FreeBASIC"".

{{fbdoc item="see"}}
	- ##[[KeyPgBit|Bit]]##
	- ##[[KeyPgBitreset|Bitreset]]##
	
{{fbdoc item="back" value="CatPgBits|Bit Manipulation"}}