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)
    example
  • intout = bitset(A,bit,assumedtype)
    example
  • intout = bitset(A,bit,V)
    example
  • intout = bitset(A,bit,V,assumedtype)
    example

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 =

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 =

  1×8 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.

Introduced before R2006a

Was this topic helpful?