Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::rotl(3)		      C++ Standard Libary		  std::rotl(3)

NAME
       std::rotl - std::rotl

Synopsis
	  Defined in header <bit>
	  template<   class   T	 >					(since
       C++20)
	  [[nodiscard]]	constexpr T rotl( T x, int s ) noexcept;

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

	  Formally, let	N be std::numeric_limits<T>::digits, 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, unsigned char,	unsigned short,	unsigned int, unsigned
       long, unsigned
	  long long, or	an extended unsigned integer type).

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

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

Notes
	  Feature-test macro: __cpp_lib_bitops

Example
       // Run this code

	#include <bit>
	#include <bitset>
	#include <cstdint>
	#include <iostream>

	int main()
	{
	    const std::uint8_t i = 0b00011101;
	    std::cout << "i	     = " << std::bitset<8>(i) << '\n';
	    std::cout  << "rotl(i,0)  =	" << std::bitset<8>(std::rotl(i,0)) <<
       '\n';
	    std::cout << "rotl(i,1)  = " << std::bitset<8>(std::rotl(i,1))  <<
       '\n';
	    std::cout  << "rotl(i,4)  =	" << std::bitset<8>(std::rotl(i,4)) <<
       '\n';
	    std::cout << "rotl(i,9)  = " << std::bitset<8>(std::rotl(i,9))  <<
       '\n';
	    std::cout << "rotl(i,-1) = " << std::bitset<8>(std::rotl(i,-1)) <<
       '\n';
	}

Output:
	i	   = 00011101
	rotl(i,0)  = 00011101
	rotl(i,1)  = 00111010
	rotl(i,4)  = 11010001
	rotl(i,9)  = 00111010
	rotl(i,-1) = 10001110

See also
	  rotr	      computes the result of bitwise right-rotation
	  (C++20)     (function	template)
	  operator<<=
	  operator>>= performs binary shift left and shift right
	  operator<<  (public member function of std::bitset<N>)
	  operator>>

http://cppreference.com		  2022.07.31			  std::rotl(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::rotl&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help