정보처리기사 실기 264p, 문제 10번 Java로 구현된 프로그램 실행결과를 쓰는 문제에서,
자바와 c언어는 2의 보수로 비트를 계산한다고 해설을 들었습니다.
하지만~a값을 출력할 때에는 2의보수인 값을 사용하지만 나머지 다른 비트연산자에서는 2의보수를 사용하지 않았습니다.
~연산자 일때에만 2의보수를 사용하여 결과값을 출력하는 것인지 궁금합니다.
감사합니다.
안녕하세요 길벗수험서 운영팀입니다.
정수 비트의 맨 앞자리는 부호비트로 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 자료형에서 맨 앞의 비트가 건드려질 정도로 큰 수 계산이 나올 가능성은 적어보이네요.
행복한 하루되세요 :)