붉은 원 부분이 이해가 안되네요.
S[1]=1일 때 저 과정을 거치고 음수이니 -1을 곱하는 건 알겠는데 왜 128에서 빼야하는지는 모르겠어요.
만약 S[8]=10001101이면 어떻게 되는지 이 예를 들어서 자세하게 설명 해 주시길 부탁드립니다.
안녕하세요.
최상위 비트 값이 1인 경우 음수이고 음수인 경우 2의 보수로 표현되었다는 조건에 따라
S(8)에 10001101이 기억되어 있다면 이는 십진수로 -13이라는 의미입니다.
맨 앞은 부호 음수(-)를 의미하고 실제값 1101이 13인 것이죠.
하지만 처리 과정을 통해 10001101이 십진수로 변환하면 DEC에는 141이 저장됩니다.
그래서 이 값을 우리가 알고 있는 13이라는 값으로 변환하기 위한 과정이 필요한데,
그 방법이 표현된 비트 수의 가장 최상위를 1로 만든 값으로 빼주는 것이죠.
즉 8비트 이므로 최상위 비트를 1로 만든 10000000(128)을 빼주는 것입니다.
즉 처리되어 DEC에 기억된 값이 10001101이라면 141입니다. 여기서 10000000인 128을 빼주면
141-128 = 13이 됩니다.
그런 다음 DEC에 (-1)을 곱하여 -13으로 출력을 하는 것이죠.
오늘도 즐거운 하루 되세요.
-
*2016-11-18 10:15:10
안녕하세요.
최상위 비트 값이 1인 경우 음수이고 음수인 경우 2의 보수로 표현되었다는 조건에 따라
S(8)에 10001101이 기억되어 있다면 이는 십진수로 -13이라는 의미입니다.
맨 앞은 부호 음수(-)를 의미하고 실제값 1101이 13인 것이죠.
하지만 처리 과정을 통해 10001101이 십진수로 변환하면 DEC에는 141이 저장됩니다.
그래서 이 값을 우리가 알고 있는 13이라는 값으로 변환하기 위한 과정이 필요한데,
그 방법이 표현된 비트 수의 가장 최상위를 1로 만든 값으로 빼주는 것이죠.
즉 8비트 이므로 최상위 비트를 1로 만든 10000000(128)을 빼주는 것입니다.
즉 처리되어 DEC에 기억된 값이 10001101이라면 141입니다. 여기서 10000000인 128을 빼주면
141-128 = 13이 됩니다.
그런 다음 DEC에 (-1)을 곱하여 -13으로 출력을 하는 것이죠.
오늘도 즐거운 하루 되세요.