책 내용 질문하기
보수로 계산을 할때와 하지 않을때
도서
2020 시나공 정보처리기사 실기 [기본서]
페이지
147
조회수
392
작성일
2020-05-08
작성자
탈퇴*원
첨부파일

안녕하세요 ,

 

문제풀이를 하다보니 보수로 계산을할때와 하지않을때의 기준을 잘 모르겠어서 어려움이 있습니다.

 

가령 147p 11번 문제 같은경우는 ~a 에대한 값을 구할때 2의보수의 값을 구해야한다고 나와있는데

 

155p 32번 문제같은 경우에는 ~b에대한값을 구할때는 보수의 값으로 계산하지않고 그냥 3의 부정값을 계산해서 연산을 하더라구요

 

어떨때 보수로 계산을해야하는지 설명부탁드립니다~  

답변
2020-05-11 11:30:20

안녕하세요 길벗수험서 운영팀입니다.

 

[컴퓨터의 입장] 과  출력되는 [사용자의 입장]을 구분하여 볼 필요가 있습니다.

 

[컴퓨터의 입장] 에서 해당 수의 맨 앞 비트가 '1'인 경우 해당 수는 '음수'로 판단합니다.

만약 이 수를 사용자에게 10진수로 출력할 때는 2의 보수화를 적용한 후 10진수 변환하여 출력해주어야 합니다.

(음수는 2의 보수화되어 저장되므로)

 

11번 문제를 보면 변수 a의 값에 not을 적용하여 바로 출력합니다.

이 경우 맨 앞의 부호비트가 '1'이 되므로 컴퓨터는 이것을 음수로 인식하여 2의 보수화를 적용한 후 10진수 변환하여 출력하죠.

 

32번 문제의 경우 b의 값에 not을 적용하면 동일하게 부호비트가 '1'이 되지만 아직 출력과정을 거치지 않으니 그전에 다른 연산을 먼저 해줄 필요가 있습니다.

다른 비트 연산 중에 부호비트가 '0'으로 바뀌어서 2의 보수화가 필요 없을 수가 있으니 미리 2의 보수화를 거쳐 10진수를 뽑아낼 필요가 없죠.

 

간단히 정리하자면 [컴퓨터]는 부호비트가 1이면 해당 수를

"2의 보수화된 음수" 라고 인식합니다.

[사용자]에게 보여주기 위해 2의보수화 -> 10진수변환 을 수행할 뿐입니다.

d=a&b&~b 에서는 b의 not연산 결과 외에도 다른 비트 연산이 남아있기 때문에 해당 연산을 모두 수행한 뒤에나 변환 결과를 보여주기 위해 변환(부호비트가 '0'이므로 10진수 변환만)을 수행하죠.

 

행복한 하루되세요 :)

  • 관리자
    2020-05-11 11:30:20

    안녕하세요 길벗수험서 운영팀입니다.

     

    [컴퓨터의 입장] 과  출력되는 [사용자의 입장]을 구분하여 볼 필요가 있습니다.

     

    [컴퓨터의 입장] 에서 해당 수의 맨 앞 비트가 '1'인 경우 해당 수는 '음수'로 판단합니다.

    만약 이 수를 사용자에게 10진수로 출력할 때는 2의 보수화를 적용한 후 10진수 변환하여 출력해주어야 합니다.

    (음수는 2의 보수화되어 저장되므로)

     

    11번 문제를 보면 변수 a의 값에 not을 적용하여 바로 출력합니다.

    이 경우 맨 앞의 부호비트가 '1'이 되므로 컴퓨터는 이것을 음수로 인식하여 2의 보수화를 적용한 후 10진수 변환하여 출력하죠.

     

    32번 문제의 경우 b의 값에 not을 적용하면 동일하게 부호비트가 '1'이 되지만 아직 출력과정을 거치지 않으니 그전에 다른 연산을 먼저 해줄 필요가 있습니다.

    다른 비트 연산 중에 부호비트가 '0'으로 바뀌어서 2의 보수화가 필요 없을 수가 있으니 미리 2의 보수화를 거쳐 10진수를 뽑아낼 필요가 없죠.

     

    간단히 정리하자면 [컴퓨터]는 부호비트가 1이면 해당 수를

    "2의 보수화된 음수" 라고 인식합니다.

    [사용자]에게 보여주기 위해 2의보수화 -> 10진수변환 을 수행할 뿐입니다.

    d=a&b&~b 에서는 b의 not연산 결과 외에도 다른 비트 연산이 남아있기 때문에 해당 연산을 모두 수행한 뒤에나 변환 결과를 보여주기 위해 변환(부호비트가 '0'이므로 10진수 변환만)을 수행하죠.

     

    행복한 하루되세요 :)

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.