강영미님 안녕하세요? ^^
알고리즘 최고 난이도까지 학습을 하셨네요.
질문에 답변드립니다.
보수의 경우 말씀하신대로 수학적인 개념이 필요하지요.
보수는 컴퓨터에서 뺄셈을 연산하기 위해서 만들어 졌습니다.
컴퓨터에는 가산기(Adder)만 존재하고 별도의 뺄셈기가 존재하지 않습니다.
따라서 컴퓨터에서 뺄셈을 연산하기 위해서 보수의 개념을 만들었구요.
1의보수와 2의 보수의 개념이 생긴거지요.
예를 들어 5 - 3 을 연산한다면 이를 5 + (-3) 으로 변경하여 연산하는 개념입니다.
따라서 1의보수나 2의보수는 음수에만 해당하는 표현법이 맞습니다. ^^
보수를 만드는 순서는 10진수 --> 2진수(부호와 절대값) --> 부호와 1의 보수 --> 부호와 2의보수
순서로 변경하는 것이 맞습니다.
-8 을 순서대로 변경하면 (8비트이며 첫번째 비트는 부호비트입니다. 음수이므로 부호는 1입니다.)
부호와 절대값 : 1 0 0 0 1 0 0 0
부호와 1의 보수 : 1 1 1 1 0 1 1 1 (부호비트를 제외한 나머지 비트를 1에서 뺀 결과)
부호와 2의 보수 : 1 1 1 1 1 0 0 0
위의 순서로 변경되는 것이지요.
부호와 2의 보수를 이용한 2진수의 뺄셈연산에 대해 추가설명 드리면 다음과 같습니다.
10 - 8 을 연산할 때
10을 부호와 절대값으로 변경하면 0 0 0 0 1 0 1 0 이 됩니다.
10에 -8의 2의 보수 표현인 1 1 1 1 1 0 0 0 을 더해줍니다.
0 0 0 0 1 0 1 0 + 1 1 1 1 1 0 0 0
위 연산의 결과는 1 0 0 0 0 0 0 1 0 이 됩니다.
9비트가 되었습니다. 맨 위의 자리올림 1을 버리면 0 0 0 0 0 0 1 0 으로 2가 되어 10-8의
결과가 나오게 됩니다. ^^
이렇게 2의 보수를 이용하게 되면 뺄셈기가 없어도 덧셈으로 뺄셈의 결과를 출력할 수
있습니다. 이것이 보수를 사용하는 이유입니다. ^^
맞게 이해하신겁니다. ^^
위 설명을 읽어보시구요. 이해가 안되시면 다시 질문을 주시면 동영상으로 설명드리도록
하겠습니다. ^^
열공하시구요.
즐거운 하루되세요. ^^
어떻게 보면 질문이 좀 이상할 수도 있는데요,,;; 보수는 음수에서만 가능한 것이지요? 제가 문과 출신에다가,,수학을 무지 싫어라해서 그런지,, 보수자체에 대해서 이해가 부족한것 같아요.ㅠㅠ 1에 대한 9의 보수는 8, 1에 대한 10의 보수는 9, 요것은 이해됐거든요. 보수 알고리즘(2번째꺼, 148p) 3번에서 다시한번 음수냐고 물은 것을 보면 1의보수, 2의보수,,요런것은 음수에서만 되는것 같긴한데요.. 보수 강의 두번 듣고 1의보수 전환, 2의 보수로의 전환은 이해했어요
그럼 결론적으로 10진수 -> 2진법 -> 1의 보수 -> 2의 보수 이 순서로 변환해야 하는거죠? 이건 수학적으로 왜 이런건지,,,,저도 제 머리속에서 정리가 안되어서 질문하는것도 어렵네요;; 제가 이론적인게 이해가 되어야,,,할꺼같아서요~ 이론적인 것이 이해가 안되니깐,,보수 순서도를 이해하고, 디버깅도 가르쳐 주신대로 하니깐 되긴 되는데,,약간 뜬구름 잡는 느낌이라,,,,개운치가 않아요. 필기 공부 혼자서 그냥 책보고 했거든요, 그때 이부분은 하나도 모르겠더라구요.. 약간 수학적 질문인거 같은데,,,,수학과 컴터에 문외한 저에게 좀 가르쳐주세요^^
|