std::rotr
De fr.cppreference.net
| Défini dans l'en-tête <bit>
|
||
template< class T >
constexpr T rotr( T x, int s ) noexcept;
|
(depuis C++20) | |
Calcule le résultat de la rotation à droite bit à bit de la valeur de x de s positions. Cette opération est également connue sous le nom de décalage circulaire à droite.
Formellement, soit N soit std::numeric_limits<T>::digits et r soit s % N.
- Si
rvaut0, retournex; - si
rest positif, retourne(x >> r) | (x << (N - r)); - si
rest négatif, retournestd::rotl(x, -r).
Cette surcharge participe à la résolution de surcharge uniquement si T est un type entier non signé (c'est-à-dire unsigned char, unsigned short, unsigned int, unsigned long, unsigned long long, ou un type entier non signé étendu).
Paramètres
| x | - | valeur de type entier non signé |
| s | - | nombre de positions à décaler |
Valeur de retour
Le résultat de la rotation à droite au niveau des bits de x par s positions.
Notes
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_bitops
|
201907L
|
(C++20) | Opérations sur les bits |
Exemple
Exécuter ce code
#include <bit> #include <bitset> #include <cstdint> #include <iostream> int main() { using bin = std::bitset<8>; const std::uint8_t x{0b00011101}; std::cout << bin(x) << " <- x\n"; for (const int s : {0, 1, 9, -1, 2}) std::cout << bin(std::rotr(x, s)) << " <- rotr(x, " << s << ")\n"; }
Sortie :
00011101 <- x 00011101 <- rotr(x, 0) 10001110 <- rotr(x, 1) 10001110 <- rotr(x, 9) 00111010 <- rotr(x, -1) 01000111 <- rotr(x, 2)
Voir aussi
(C++20) |
calcule le résultat d'une rotation gauche au niveau des bits (modèle de fonction) |
(C++29) |
inverse les bits dans un entier (modèle de fonction) |
| effectue un décalage binaire à gauche et à droite (fonction membre publique de std::bitset<N>)
|