문제

저는 컴퓨터 아키텍처용 HW 작업을 하고 있는데 다음과 같은 문제를 발견했습니다.

A = 247
비 = 237

1) A와 B가 2의 보수 형식으로 저장된 부호 있는 8비트 정수라고 가정합니다.포화 산술을 사용하여 A + B를 계산합니다.결과는 10진수로 기록되어야 합니다.당신의 작품을 보여주세요.
2) A와 B가 2의 Compelemnt 형식으로 저장된 부호 있는 8비트 정수라고 가정합니다.포화 산술을 사용하여 A - B를 계산합니다.

자, 이것이 어떻게 유효한 질문일까요?나는 포화 산술이 무엇인지 알고 있지만 8비트 2의 보수로 표현할 수 없는 경우 A는 247이고 B는 237이라고 말하는 것이 어떻게 타당합니까?

포화 산술의 요점은 오버플로/언더플로의 경우에 모든 비트를 극한 값으로 설정한다는 점을 알고 있지만 일련의 질문을 하는 것은 의미가 없습니다(이 같은 문제에 대해 3개가 더 있습니다). 지정한 형식으로 표현할 수 없는 숫자의 산술을 포함합니다.

내가 틀렸나요?

도움이 되었습니까?

해결책

의미가 있는 유일한 해석은 주어진 값이 서명되지 않은 문제의 숫자에 대한 해석;127보다 큰 값은 분명히 8비트 부호 있는 2의 보수 값의 범위를 벗어납니다.그러나 질문이 잘못 설명되었다는 데 동의합니다.

다른 팁

잘 모르겠지만 그렇죠 ~할 것 같다 물어보세요:"십진수 237을 8비트 정수로 변환합니다.이제 해당 비트를 8비트 2의 보수 정수로 해석하고 추가합니다."

C에서 다음과 같이 말하는 것과 같습니다.

char a = 237;
printf("%x %d\n",a, a);

8비트 값 "237"에 대한 2의 보수 해석을 기반으로 예상할 수 있는 값을 컴파일하고 제공합니다.

제가 보기에는 잘못된 것 같습니다.8비트 부호 있는 2의 보수 정수는 -128에서 127 사이일 수 있습니다.8비트 부호 있는 2의 보수 변수에 상수 237 또는 247을 할당하려고 하면 언어에 따라 오류가 발생합니다.

문제가 "A와 B가 8비트 부호 있는 정수에 저장되어 있다고 가정"하는 것이라면 이해가 될 것입니다.부호 있는 8비트 정수에 A = 247을 저장하면 -9 값이 생성되고, B = 237을 저장하면 -19 값이 생성됩니다.그렇지 않으면 의미가 없습니다.부호 있는 8비트 정수는 247 또는 237의 값을 가질 수 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top