std:: rotl
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
(C++20)
|
||||
|
(C++23)
|
||||
| Integral powers of 2 | ||||
|
(C++20)
|
||||
|
(C++20)
|
||||
|
(C++20)
|
||||
|
(C++20)
|
||||
| Rotating | ||||
|
rotl
(C++20)
|
||||
|
(C++20)
|
||||
| Counting | ||||
|
(C++20)
|
||||
|
(C++20)
|
||||
|
(C++20)
|
||||
|
(C++20)
|
||||
|
(C++20)
|
||||
| Endian | ||||
|
(C++20)
|
|
헤더 파일에 정의됨
<bit>
|
||
|
template
<
class
T
>
constexpr T rotl ( T x, int s ) noexcept ; |
(C++20부터) | |
x 값을 s 위치만큼 비트 단위 왼쪽 회전한 결과를 계산합니다. 이 연산은 왼쪽 순환 시프트 로도 알려져 있습니다.
공식적으로,
N
을
std::
numeric_limits
<
T
>
::
digits
라 하고
r
을
s
%
N
라 한다.
- 만약 r 이 0 이면, x 를 반환합니다;
- 만약 r 이 양수이면, ( x << r ) | ( x >> ( N - r ) ) 를 반환합니다;
- 만약 r 이 음수이면, std:: rotr ( x, - r ) 를 반환합니다.
이 오버로드는 오버로드 해결에 다음 조건에서만 참여합니다:
T
가 부호 없는 정수 타입인 경우 (즉,
unsigned
char
,
unsigned
short
,
unsigned
int
,
unsigned
long
,
unsigned
long
long
, 또는 확장 부호 없는 정수 타입).
목차 |
매개변수
| x | - | 부호 없는 정수형의 값 |
| s | - | 이동할 위치 수 |
반환값
비트 단위로 왼쪽으로 회전한 결과 x 를 s 위치만큼 이동.
참고 사항
| 기능 테스트 매크로 | 값 | 표준 | 기능 |
|---|---|---|---|
__cpp_lib_bitops
|
201907L
|
(C++20) | 비트 연산 |
예제
#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"; }
출력:
00011101 <- x 00011101 <- rotl(x, 0) 00111010 <- rotl(x, 1) 11010001 <- rotl(x, 4) 00111010 <- rotl(x, 9) 10001110 <- rotl(x, -1)
참고 항목
|
(C++20)
|
비트 단위 우측 회전 결과를 계산함
(함수 템플릿) |
|
이진 좌측 시프트 및 우측 시프트 수행
(
std::bitset<N>
의 public 멤버 함수)
|