책 내용 질문하기
2권 270p 24번
도서
2021 시나공 정보처리기사 실기
페이지
270
조회수
345
작성일
2021-09-23
작성자
탈퇴*원
첨부파일

a, c = 32, -3

b = a << 2     

a >>= 3         

c = c << 2    

print(a, b, c)

 

"c"를 구할 때 2의 보수 과정을 거쳐서 구하는 것으로 해설지에도 나와있고 

 

동영상 강의에서도 2의 보수를 거쳐서 c의 값을 구했는데

 

처음에 문제를 풀 때는 

 

2의 보수로 변환시키지 않고

 

1000 ..... 0000 0011  = - 3 에서

 

1000 ..... 0000 1100 = - 12 로 계산했습니다

 

답은 맞는데 풀이과정이 달라서 

 

2의 보수를 반드시 거쳐야 하는건지 질문드립니다

 

답변
2021-09-27 09:23:55

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

 

원칙적으로 음수의 비트 연산에서는 2의 보수로 전환한 후 계산해야 합니다.

 

몇몇 비트 연산의 경우 일정 조건 하에 보수화를 진행하지 않고 연산해도 동일한 값이 나오는 경우가 있으나,

그와 같은 연산의 결과가 항상 정답이라고 보장할 수 없으므로, 시간의 여유가 없지 않는한 2의 보수화를 진행한 후 결과를 내시는 것을 권해드립니다.

 

행복한 하루되세요 :)

  • 관리자
    2021-09-27 09:23:55

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

     

    원칙적으로 음수의 비트 연산에서는 2의 보수로 전환한 후 계산해야 합니다.

     

    몇몇 비트 연산의 경우 일정 조건 하에 보수화를 진행하지 않고 연산해도 동일한 값이 나오는 경우가 있으나,

    그와 같은 연산의 결과가 항상 정답이라고 보장할 수 없으므로, 시간의 여유가 없지 않는한 2의 보수화를 진행한 후 결과를 내시는 것을 권해드립니다.

     

    행복한 하루되세요 :)

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