85쪽에 12번문제와 86쪽에23번 문제에 대해 문의 드립니다.
우선 12번 문제에 대해서
10진수 550에 대한 9의 보수는
550-x=999 에서 x값을 구하면 나오는 거로 알고 있는데 혹시
81쪽에 자기보수코드에 대한 설명을 보면 10진수5의 9의 보수를 구하는 과정이 나오는데 이과정대로 풀이를 할 수있나요?
해봤는데 답이 계속 안나와서 그런데 둘이 뭐가 다른건지에 대해 궁금합니다.
23번 문제풀이를 보면 이진수를 10진수로 바꾸고 뺄셈을 하라고 되어 있는데
혹시 이진수끼리 뺄셈이 가능한지에 대해 궁금합니다.가능하다면 어떻게 하면 되는지에 대해 알려 주시면 감사하겠습니다.
안녕하세요 길벗수험서 운영팀입니다.
[12번]
BCD와 3초과코드가 각 숫자의 한자리 한자리에 적용된다는 것에 주의하세요.
5, 5, 0 을 따로 따로 두고 각 자리에 대한 2진수를 구한 후 81쪽의 자기 보수 코드의 과정을 밟으면 동일하게 9의 보수를 구할 수 있습니다.
5의 경우 잠깐만요에 나온 그대로 수행하시면 되고,
0의 경우
0000 + 11 = 0011 (보수화) = 1100 - 11 = 1001 = 10진수 9가 나옵니다.
[23번]
가능합니다.
결과값이 양수인 경우 10진수와 다를바가 없습니다.
위의 1100 - 11을 예로 들면,
0에서 1을 뺄수 없으니 앞에서 가져옵니다. 10진수에서 10을 가져오듯, 2진수에서는 2를 가져옵니다. 그럼 맨 뒷자리는 2-1이 되어 1이 나옵니다. (1)
다음 자리는 0입니다. 1을 빼야하니 앞에서 2를 가져오는데 문제는 뒤에서 이미 하나를 가져갔었죠. 때문에 2-1-1이 되어 0이 됩니다. (01)
다음 자리는 감산 계산이 없지만 뒤에서 하나를 가져간바 있으므로 원래 수에서 1이 감산됩니다. (001)
다음 자리는 아무것도 없으니 그대로 내려옵니다. (1001)
(인터넷 검색을 추천드립니다. 그림으로 보는게 이해가 빨라요)
결과값이 음수인 경우
원래수 - 빼는수 = 결과값
이라고 했을 때,
1. 빼는수의 2의 보수화
2. 원래수 + 위의 결과
여기가 끝이지만 결과가 음수이므로 2의 보수화 되어 있다는 것을 가정해야 합니다. 때문에 10진수로 변환할 때 2의 보수화를 다시 해준 뒤에 음수 기호를 붙여줘야 하죠.
23번을 풀어보면
1101(2의 보수화) -> 0011
1011+0011 = 1110
1110(2의 보수화) -> 0010
0010(10진수화) -> 2
2(음수기호 첨부) -> -2
요렇게 됩니다.
행복한 하루되세요 :)
-
관리자2020-08-20 11:25:59
안녕하세요 길벗수험서 운영팀입니다.
[12번]
BCD와 3초과코드가 각 숫자의 한자리 한자리에 적용된다는 것에 주의하세요.
5, 5, 0 을 따로 따로 두고 각 자리에 대한 2진수를 구한 후 81쪽의 자기 보수 코드의 과정을 밟으면 동일하게 9의 보수를 구할 수 있습니다.
5의 경우 잠깐만요에 나온 그대로 수행하시면 되고,
0의 경우
0000 + 11 = 0011 (보수화) = 1100 - 11 = 1001 = 10진수 9가 나옵니다.
[23번]
가능합니다.
결과값이 양수인 경우 10진수와 다를바가 없습니다.
위의 1100 - 11을 예로 들면,
0에서 1을 뺄수 없으니 앞에서 가져옵니다. 10진수에서 10을 가져오듯, 2진수에서는 2를 가져옵니다. 그럼 맨 뒷자리는 2-1이 되어 1이 나옵니다. (1)
다음 자리는 0입니다. 1을 빼야하니 앞에서 2를 가져오는데 문제는 뒤에서 이미 하나를 가져갔었죠. 때문에 2-1-1이 되어 0이 됩니다. (01)
다음 자리는 감산 계산이 없지만 뒤에서 하나를 가져간바 있으므로 원래 수에서 1이 감산됩니다. (001)
다음 자리는 아무것도 없으니 그대로 내려옵니다. (1001)
(인터넷 검색을 추천드립니다. 그림으로 보는게 이해가 빨라요)
결과값이 음수인 경우
원래수 - 빼는수 = 결과값
이라고 했을 때,
1. 빼는수의 2의 보수화
2. 원래수 + 위의 결과
여기가 끝이지만 결과가 음수이므로 2의 보수화 되어 있다는 것을 가정해야 합니다. 때문에 10진수로 변환할 때 2의 보수화를 다시 해준 뒤에 음수 기호를 붙여줘야 하죠.
23번을 풀어보면
1101(2의 보수화) -> 0011
1011+0011 = 1110
1110(2의 보수화) -> 0010
0010(10진수화) -> 2
2(음수기호 첨부) -> -2
요렇게 됩니다.
행복한 하루되세요 :)