Main Content

bitset

Set bit at specific location

Description

intout = bitset(A,bit) returns the value of A with position bit set to 1 (on).

example

intout = bitset(A,bit,assumedtype) assumes A is of type assumedtype.

example

intout = bitset(A,bit,V) returns A with position bit set to the value of V.

  • If V is zero, then the bit position bit is set to 0 (off).

  • If V is nonzero, then the bit position bit is set to 1 (on).

example

intout = bitset(A,bit,V,assumedtype) assumes A is of type assumedtype.

example

Examples

collapse all

Add powers of 2 onto a number.

A = 4;
intout = bitset(A,4:6)
intout = 1×3

    12    20    36

You can see that bitset sequentially turns on bits 4 through 6.

c = dec2bin(intout)
c = 3x6 char array
    '001100'
    '010100'
    '100100'

MATLAB® throws an error if you specify an integer outside the range of assumedtype. For instance, bitset(300,5,'int8') returns an error since the maximum value of an int8 integer is 127.

Avoid this error by limiting your input to the range of the specified data type.

intout = bitset(75,5,'int8')
intout = 
91

Repeatedly subtract powers of 2 from a number.

a = intmax('uint8')
a = uint8

255
for k = 0:7
   a = bitset(a, 8-k, 0);
   b(1,k+1) = a;
end
b
b = 1x8 uint8 row vector

   127    63    31    15     7     3     1     0

Set multiple bits to different values

bits = 2:6;
val = [1 0 0 1 1];
intout = bitset(0,bits,val,'int8')
intout = 1×5

     2     0     0    16    32

Input Arguments

collapse all

Input values, specified as an array. A, bit, and V can each be scalars or arrays of the same size.

  • If A is a double array, and assumedtype is not specified, then MATLAB® treats A as an unsigned 64-bit integer.

  • If assumedtype is specified, then all elements in A must have integer values within the range of assumedtype.

Data Types: double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Bit position, specified as an integer or integer array. A, bit, and V can each be scalars or arrays of the same size. The values of bit must be between 1 (the least significant bit) and the number of bits in the integer class of A.

Data Types: double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Assumed data type of A, specified as 'uint64', 'uint32', 'uint16', 'uint8', 'int64', 'int32', 'int16', or 'int8'.

  • If A is a double array, then assumedtype can specify any valid integer type, but defaults to 'uint64'.

  • If A is an integer type array, then assumedtype must specify that same integer type.

Data Types: char | string

Bit value, specified as a scalar or a numeric array. A, bit, and V can each be scalars or arrays of the same size.

Data Types: double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Output Arguments

collapse all

Adjusted integers, returned as an array. intout is the same data type as A.

  • If A, bit, and V are all scalars, then intout is also a scalar.

  • If any of A, bit, or V is an array, then intout is the same size as that array.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

GPU Code Generation
Generate CUDA® code for NVIDIA® GPUs using GPU Coder™.

HDL Code Generation
Generate VHDL, Verilog and SystemVerilog code for FPGA and ASIC designs using HDL Coder™.

Version History

Introduced before R2006a