std::shr
cppreference.net에서
| 헤더 <bit>
|
||
template< class T, class S >
constexpr T shr( T x, S s ) noexcept;
|
에 정의됨 (C++29부터) | |
반환값: ⌊x · 2-s
⌋ 음의 무한대 방향으로 버림되며, T에 맞게 잘립니다.
매개변수
| x | - | 부호 없는 정수 타입의 값 |
| s | - | 이동할 위치의 개수 |
반환값
⌊x · 2-s
⌋ 결과 타입으로 잘린 값.
참고 사항
>> 연산자와 달리, std::shr은 절대 정의되지 않은 동작을 일으키지 않습니다.
이동은 s번 1비트씩 오른쪽으로 이동하거나, -s번 1비트씩 왼쪽으로 이동하는 것처럼 (s가 음수인 경우) 수행되며, -s는 오버플로우될 수 없다는 점이 다릅니다.
| 기능 테스트 매크로 | 값 | 표준 | 기능 |
|---|---|---|---|
__cpp_lib_bitops |
202606L |
(C++29) | 개선된 이동 |
가능한 구현
template<class T, class S> // TODO: constraints
constexpr T shr(T x, S s) noexcept
{
constexpr auto width = S(std::numeric_limits<std::make_unsigned_t<T>>::digits);
if constexpr (std::is_signed_v<S>)
{
if (s < 0)
return s <= -width ? T(0) : x << -s;
}
return s >= width ? T(x < 0 ? -1 : 0) : x >> s;
}
|
예제
| 이 부분은 불완전합니다 사유: 예제 없음 |
참고 항목
(C++29) |
정의되지 않은 동작 없이 왼쪽으로 이동 (함수 템플릿) |
(C++20) |
비트 왼쪽 회전 결과를 계산 (함수 템플릿) |
(C++20) |
비트 오른쪽 회전 결과를 계산 (함수 템플릿) |