나는 운영 체제에 관한 대학 과정을 따르고 있으며 바이너리에서 16 진수, 10 진수에서 16 진수 등으로 변환하는 방법을 배우고 있습니다. 오늘 우리는 2의 보수 (~ 숫자를 사용하여 부호있는 / 부호없는 숫자가 메모리에 저장되는 방법을 배웠습니다. + 1).
우리는 종이에 대해 몇 가지 연습을하고 있으며, 선생님 께 과제를 제출하기 전에 답을 확인하고 싶습니다. 처음 몇 가지 연습을 위해 C ++ 프로그램을 작성했지만 이제 다음 문제로 답을 확인하는 방법에 갇혀 있습니다.
char a, b;
short c;
a = -58;
c = -315;
b = a >> 3;
우리는 이진 표현 보여줄 필요가 메모리 의를 a
, b
하고 c
.
나는 종이에 그것을 작성했고 나에게 다음과 같은 결과를 준다 (2의 보수 후 숫자의 메모리에있는 모든 이진 표현) :
a = 00111010 (문자이므로 1 바이트)
b = 00001000 (문자이므로 1 바이트)
c = 11111110 11000101 (짧으므로 2 바이트)
내 답변을 확인하는 방법이 있습니까? C ++에서 숫자의 메모리에 이진 표현을 표시하는 표준 방법이 있습니까, 아니면 각 단계를 직접 코딩해야합니까 (두 보수를 계산 한 다음 이진으로 변환해야합니까)? 나는 후자가 오래 걸리지 않는다는 것을 알고 있지만 표준 방법이 있는지 궁금합니다.
std::hex
) 조작자를 사용하여 16 진수 표현을 인쇄 할 수 있습니다 -나는 당신이 나머지를 해결하기위한 연습으로 남겨 두겠습니다 ...