std::rotr
De cppreference.com
<tbody>
</tbody>
| Definido en el archivo de encabezado <bit>
|
||
template< class T > [[nodiscard]] constexpr T rotr( T x, int s ) noexcept; |
(desde C++20) | |
Calcula el resultado de rotar a la derecha bit a bit el valor de x en s posiciones. Esta operación también se conoce como desplazamiento circular a la derecha.
Formalmente, sea N std::numeric_limits<T>::digits, sea r s % N.
- Si
res 0, devuelvex; - si
res positiva, devuelve(x >> r) | (x << (N - r)); - si
res negativa, devuelvestd::rotl(x, -r).
Esta sobrecarga solo participa en la resolución de sobrecargas si T es un tipo entero sin signo (es decir, unsigned char, unsigned short, unsigned int, unsigned long, unsigned long long, o un tipo entero sin signo extendido).
Parámetros
| x | - | Valor del tipo entero sin signo. |
| s | - | Número de posiciones a cambiar. |
Valor de retorno
El resultado de rotar x a la derecha bit a bit por s posiciones.
Notas
| Macro de Prueba de característica |
|---|
__cpp_lib_bitops
|
Ejemplo
Ejecuta este código
#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';
}
Salida:
i = 00011101
rotr(i,0) = 00011101
rotr(i,1) = 10001110
rotr(i,9) = 10001110
rotr(i,-1) = 00111010
Véase también
(C++20) |
Calcula el resultado de la rotación izquierda de bits (plantilla de función) |
realiza izquierda binario desplazamiento y desplazamiento a la derecha Original: performs binary shift left and shift right The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro pública de std::bitset)
|