Namespaces
Variants
Actions

std::rotl

From cppreference.com
< cpp‎ | numeric
 
 
 
 
Defined in header <bit>
template<class T >
constexpr T rotl( T x, int s )noexcept;
(since C++20)

Computes the result of bitwise left-rotating the value of x by s positions. This operation is also known as a left circular shift.

Formally, let N be std::numeric_limits<T>::digits and r be s % N.

  • If r is 0, returns x;
  • if r is positive, returns (x << r)|(x >>(N - r));
  • if r is negative, returns std::rotr(x, -r).

This overload participates in overload resolution only if T is an unsigned integer type (that is, unsignedchar, unsignedshort, unsignedint, unsignedlong, unsignedlonglong, or an extended unsigned integer type).

Contents

[edit]Parameters

x - value of unsigned integer type
s - number of positions to shift

[edit]Return value

The result of bitwise left-rotating x by s positions.

[edit]Notes

Feature-test macroValueStdFeature
__cpp_lib_bitops201907L(C++20)Bit operations

[edit]Example

#include <bit>#include <bitset>#include <cstdint>#include <iostream>   int main(){using bin =std::bitset<8>;conststd::uint8_t x{0b00011101};std::cout<< bin(x)<<" <- x\n";for(constint s :{0, 1, 4, 9, -1})std::cout<< bin(std::rotl(x, s))<<" <- rotl(x, "<< s <<")\n";}

Output:

00011101 <- x 00011101 <- rotl(x, 0) 00111010 <- rotl(x, 1) 11010001 <- rotl(x, 4) 00111010 <- rotl(x, 9) 10001110 <- rotl(x, -1)

[edit]See also

(C++20)
computes the result of bitwise right-rotation
(function template)[edit]
performs binary shift left and shift right
(public member function of std::bitset<N>)[edit]
close