책 내용 질문하기
비트연산자에 관하여
도서
2021 시나공 정보처리기사 실기
페이지
264
조회수
383
작성일
2021-09-17
작성자
탈퇴*원
첨부파일

정보처리기사 실기 264p, 문제 10번 Java로 구현된 프로그램 실행결과를 쓰는 문제에서,

 

자바와 c언어는 2의 보수로 비트를 계산한다고 해설을 들었습니다. 

 

하지만~a값을 출력할 때에는 2의보수인 값을 사용하지만 나머지 다른 비트연산자에서는 2의보수를 사용하지 않았습니다. 

 

~연산자 일때에만 2의보수를 사용하여 결과값을 출력하는 것인지 궁금합니다.

 

감사합니다.

답변
2021-09-19 21:33:20

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

 

정수 비트의 맨 앞자리는 부호비트로 0이면 양수, 1이면 음수로 체크합니다.

 

컴퓨터가 해당 정수가 저장된 메모리를 읽을 때 첫 자리가 1로 되어 있다면 "이 수는 음수구나!" 하면서 2의 보수를 적용하고 음수 기호를 붙여 출력하게 되죠.

 

때문에 부호 비트를 0에서 1로 뒤집을 수 있는 ~연산자만이 2의 보수화를 취해주는 것입니다.

 

다른 연산자라도 앞의 부호비트를 건들게 되면 2의 보수화를 할 수 있으나, 32bit를 차지하는 int 자료형에서 맨 앞의 비트가 건드려질 정도로 큰 수 계산이 나올 가능성은 적어보이네요.

 

행복한 하루되세요 :)

  • 관리자
    2021-09-19 21:33:20

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

     

    정수 비트의 맨 앞자리는 부호비트로 0이면 양수, 1이면 음수로 체크합니다.

     

    컴퓨터가 해당 정수가 저장된 메모리를 읽을 때 첫 자리가 1로 되어 있다면 "이 수는 음수구나!" 하면서 2의 보수를 적용하고 음수 기호를 붙여 출력하게 되죠.

     

    때문에 부호 비트를 0에서 1로 뒤집을 수 있는 ~연산자만이 2의 보수화를 취해주는 것입니다.

     

    다른 연산자라도 앞의 부호비트를 건들게 되면 2의 보수화를 할 수 있으나, 32bit를 차지하는 int 자료형에서 맨 앞의 비트가 건드려질 정도로 큰 수 계산이 나올 가능성은 적어보이네요.

     

    행복한 하루되세요 :)

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