문제 3)
15=0000 1111
~ 1111 0000
맨 왼쪽 비트는 부호비트, 원래의 값을 알기 위해서는 1111 0000에 대한 2의 보수를 구한다.
문제 44)
32767 = 0111 1111 1111 1111
여기에 1을 더하면
1000 0000 0000 0000이다.
---------------------------------------
라고 되어있는데요. 문제 3번에서는 +1안하고 맨왼쪽 부호비트로 음수판별했는데,
문제 44번에서는 왜 1을 더하고 맨 왼쪽 비트 부호로 음수판별하는건가요?? - 첫번째 질문
JAVA는 C언어와 마찬가지로 부호화 2의 보수법을 사용한다는 말은 수를 2의 보수로 바꿔 인식한다는 말인가요? - 두번째 질문
답변 부탁드립니다.
안녕하세요 길벗수험서 운영팀입니다.
프로그래밍 언어에서 숫자를 표기하는 자료형에서는 +1이나 not이나 어떤 계산 방식을 사용하든지 간에 해당 자료형의 첫 비트가 0인 경우 양수, 1인 경우 음수로 판독합니다.
(양수만 저장하는 자료형이 아닌 경우)
----------------
음.. 질문의 요지를 정확히 이해하지 못했습니다.
C언어나 Java언어 둘 모두 "음수"에 한해서만 2의 보수로 변환하여 메모리에 저장됩니다.
메모리에 저장된 수치 자료형을 읽어들여 맨 앞의 비트가 '1'이라면 "이것은 음수구나"하고 인식하여 나머지 비트를 2의 보수화로 변환한 다음 사용자에게는 마이너스('-')를 붙여 출력해주는 형식이죠.
행복한 하루되세요 :)
-
관리자2019-09-27 10:29:48
안녕하세요 길벗수험서 운영팀입니다.
프로그래밍 언어에서 숫자를 표기하는 자료형에서는 +1이나 not이나 어떤 계산 방식을 사용하든지 간에 해당 자료형의 첫 비트가 0인 경우 양수, 1인 경우 음수로 판독합니다.
(양수만 저장하는 자료형이 아닌 경우)
----------------
음.. 질문의 요지를 정확히 이해하지 못했습니다.
C언어나 Java언어 둘 모두 "음수"에 한해서만 2의 보수로 변환하여 메모리에 저장됩니다.
메모리에 저장된 수치 자료형을 읽어들여 맨 앞의 비트가 '1'이라면 "이것은 음수구나"하고 인식하여 나머지 비트를 2의 보수화로 변환한 다음 사용자에게는 마이너스('-')를 붙여 출력해주는 형식이죠.
행복한 하루되세요 :)