책 내용 질문하기
비트not 연산자 질문
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
121,57
조회수
129
작성일
2019-09-19
작성자
탈퇴*원
첨부파일
57p 예제에서 5번 해설을 보면, 1을 0으로 0을 1로 바꾼뒤 2의보수를 사용했습니다. 그런데 121p 24번에서 비트not 연산자는 왜 0을1로, 1을 0로 바꾸기만하고 2의 보수를 안취하는거죠?
답변
2019-09-25 11:42:33

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

 

2의 보수를 취하는 경우는 아래 두가지 입니다.

1. 음수를 표현하기 위해

2. '2의 보수로 표현된 음수'를 출력을 위해 10진수로 바꾸기 위해

 

not에서 2의 보수를 수행하는 경우는 대부분 경우 2에 해당합니다.

57쪽에서는 not을 취한 변수 f를 printf문에서 출력된 결과를 보여드리기 위해 2의 보수를 취해 결과를 보여드렸습니다. (여기서는 변수 f는 '2의 보수로 표현된 음수'가 되죠.)

 

121쪽의 24번 문제에서는 not 연산된 변수가 바로 출력되는 것이 아닌 추가 연산이 있습니다.

a&b의 결과에 not연산한 b를 다시 and연산 하는 과정이 있죠.

만약 이 모든 과정의 결과로 음수가 되었다면(첫 비트가 1) 이후 printf문에서 출력할 때 d는 2의 보수로 변환되어 출력되었어야 할 것입니다.

하지만 해당 연산에서는 첫 비트가 0이어서 '양수'가 되므로 2의 보수화를 수행할 필요가 없죠.

 

행복한 하루되세요 :)

  • 관리자
    2019-09-25 11:42:33

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

     

    2의 보수를 취하는 경우는 아래 두가지 입니다.

    1. 음수를 표현하기 위해

    2. '2의 보수로 표현된 음수'를 출력을 위해 10진수로 바꾸기 위해

     

    not에서 2의 보수를 수행하는 경우는 대부분 경우 2에 해당합니다.

    57쪽에서는 not을 취한 변수 f를 printf문에서 출력된 결과를 보여드리기 위해 2의 보수를 취해 결과를 보여드렸습니다. (여기서는 변수 f는 '2의 보수로 표현된 음수'가 되죠.)

     

    121쪽의 24번 문제에서는 not 연산된 변수가 바로 출력되는 것이 아닌 추가 연산이 있습니다.

    a&b의 결과에 not연산한 b를 다시 and연산 하는 과정이 있죠.

    만약 이 모든 과정의 결과로 음수가 되었다면(첫 비트가 1) 이후 printf문에서 출력할 때 d는 2의 보수로 변환되어 출력되었어야 할 것입니다.

    하지만 해당 연산에서는 첫 비트가 0이어서 '양수'가 되므로 2의 보수화를 수행할 필요가 없죠.

     

    행복한 하루되세요 :)

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