std::rotl
De fr.cppreference.net
| Défini dans l'en-tête <bit>
|
||
template< class T >
constexpr T rotl( T x, int s ) noexcept;
|
(depuis C++20) | |
Calcule le résultat d'une rotation gauche bit à bit de la valeur x de s positions. Cette opération est également connue sous le nom de décalage circulaire gauche.
Formellement, soit N égal à std::numeric_limits<T>::digits et r égal à s % N.
- Si
rvaut0, retournex; - si
rest positif, retourne(x << r) | (x >> (N - r)); - si
rest négatif, retournestd::rotr(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 à gauche 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, 4, 9, -1}) std::cout << bin(std::rotl(x, s)) << " <- rotl(x, " << s << ")\n"; }
Sortie :
00011101 <- x 00011101 <- rotl(x, 0) 00111010 <- rotl(x, 1) 11010001 <- rotl(x, 4) 00111010 <- rotl(x, 9) 10001110 <- rotl(x, -1)
Voir aussi
(C++20) |
calcule le résultat d'une rotation binaire vers la droite (modèle de fonction) |
(C++29) |
inverse les bits d'un entier (modèle de fonction) |
| effectue un décalage binaire à gauche et à droite (fonction membre publique de std::bitset<N>)
|