문제
비트 시프트를 원한다고 가정 해 봅시다 i
두 번 왼쪽으로 값을 저장하십시오 f
.
f = i << 2;
그 맞습니까? C/C ++에서 정확히 어떻게해야합니까?
해결책
예.
f = i << 2
교대는 다수의 비트 트위 링 작업에 유용합니다.
이것은 숫자에 4를 곱할 수있는 좋은 방법이었습니다. 그러나 요즘에는 컴파일러를 최적화하는 것이이를 처리하는 경향이 있습니다.
가장 왼쪽 가장 남은 비트는 버려집니다.
다른 팁
추가 참고로 : 질문이 태그가 지정되어 있어도 C++
, C와 C ++는 음수 값을 이동하는 것과 관련하여 약간 다른 경로를 취했음을 주목할 가치가 있습니다. C ++에서 결과 <<
또는 >>
음수 값은 구현 정의됩니다. c >>
구현 정의입니다 <<
생산합니다 정의되지 않은 행동.
예, i << 2
, f = i << 2
, 또는 f <<= 2
비트를 바꾸기 위해하고 싶은 모든 것입니다.
명심하기 위해 더 많은 교대 :
당신은 가지고 있습니다
>>
또한. 비트 레벨에서>>
서명 및 서명되지 않은 유형과 다르게 작동합니다.우선 순위
<<
그리고>>
그보다 낮습니다+
그리고-
, 어떤 사람들을 속이고, 더 좋아한다고 상상할 수 있듯이*
그리고/
.
BIT 작업에 도움이되는 완전성을 위해이 페이지를 확인할 수 있습니다. UOW 교과서 -> bitops.html
제휴하지 않습니다 StackOverflow