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

Version History

Introduced before R2006a