Documentation

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

bitset

Set bit at specific location

Syntax

intout = bitset(A,bit)
intout = bitset(A,bit,assumedtype)
intout = bitset(A,bit,V)
intout = bitset(A,bit,V,assumedtype)

Description

example

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.

Examples

collapse all

Add powers of 2 onto a number.

A = 4;
intout = bitset(A,4:6)
intout = 

    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 datatype.

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 = 

     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

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™.

Introduced before R2006a

Was this topic helpful?