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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::rotr - std::rotr

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

	  Computes the result of bitwise right-rotating	the value of  x	 by  s
       positions. This
	  operation is also known as a right 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::rotl(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	right-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 << "rotr(i,0)  = " << std::bitset<8>(std::rotr(i,0))  <<
       '\n';
	    std::cout  << "rotr(i,1)  =	" << std::bitset<8>(std::rotr(i,1)) <<
       '\n';
	    std::cout << "rotr(i,9)  = " << std::bitset<8>(std::rotr(i,9))  <<
       '\n';
	    std::cout << "rotr(i,-1) = " << std::bitset<8>(std::rotr(i,-1)) <<
       '\n';
	}

Output:
	i	   = 00011101
	rotr(i,0)  = 00011101
	rotr(i,1)  = 10001110
	rotr(i,9)  = 10001110
	rotr(i,-1) = 00111010

See also
	  rotl	      computes the result of bitwise left-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::rotr(3)

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

home | help