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