-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
3.8 비트단위 연산자
23.10.28 21:42 작성 조회수 166
1
안녕하세요. 비트단위 연산자를 공부하던 중 궁금한 점이 생겼습니다.
왜 컴파일 했을 시, bitset<4>(0110 >> 2)가 0001이 아닌 0010이 나오는지 모르겠습니다.
알려주시면 정말 감사하겠습니다.
#include <iostream>
#include <bitset>
using namespace std;
int main()
{
cout << bitset<4>(0110 >> 2) << endl;
}
답변을 작성해보세요.
1
Soobak
2023.10.28
안녕하세요, 답변 도우미 Soobak 입니다.
C++
에서는 숫자 앞에 0
이 오는 숫자를 8진수로 간주합니다.
따라서, 코드에서 0110
은 8진수 110
으로, 10진수 72
입니다.
즉, 실제로 코드가 수행하는 연산은 72 >> 2
이며, 이를 계산하면 10진수로 18
이 됩니다.
이 때, bitset<4>
를 사용하셨으므로, '10진수 18
' 을 '2진수로 표현한 10010
' 에서
비트의 일부가 잘려 0010
만 출력되는 것입니다.
'2진수 0110
' 을 연산하시려면, 강의에서의 코드처럼 0b0110
으로 2진수를 표현하기 위한 접두사 0b
를 붙여 작성하셔야 합니다.
C++
의 숫자 리터럴 표현 방식, 그리고 유사한 내용에 대한 질문 답변 링크를 첨부드립니다.
답변 1